「windows+IE」で制作したホームページを「mac+safari」で閲覧できるように変更してみました。「クロスブラウザ」という程大げさなものではありませんが、ここでは、その顛末をレポートしてみました。なお、このレポートは、ある程度ウェブ技術(HTML+javascript+PHP等)の基礎知識を有している方を対象ということで初歩的な解説は省いてあります。ご了承下さい。
パソコンのOSや使用するブラウザによって、閲覧するホームページの見え方が大きく違ったり、スクリプトが動いたり動かなかったり等、さまざまな問題が発生します。一時のブラウザ戦争が概ねマイクロソフト社のインターネット・エクスプローラ(IE)の勝利に決着したとはいえ、firefox 等の第3勢力が台頭しNetscapeやmac陣営の巻き返しも予想され、ブラウザ戦国時代が終焉したとは思われません。その上、少数派であるはずのmacユーザーはすこぶる声が大きい...(と勝手に判断m(_ _)m)。
右の画像が、windows + IE7.0 で最適化しているホームページ。すこぶる正常な世界でございます。ここで、「windows + IE7.0以外では正常に動きません」と、しっかりお断りしているページであっても「マックユーザーを完全無視してんのかあ」という苦情がときどき飛び込みます。
「とてもお宅さままで対応するのは難しいのよ」という本音は隠しつつ、ひたすら「申し訳ありません。このページはIE専用です。」と頭を下げているだけでした。
すべてのユーザーが同じようにみることのできるホームページを作る、というのは、制作側にとってひとつの理想ではありますが、現実にはとても対応しきれるものでありません。同じブラウザでもバージョンの差、あるいはOSとの組み合わせの違いでも、微妙なところで見え方が違ってきます。ある部分では全く違っていたりします。手間暇を充分かければなんとか技術的に対応できないことはないのですが、その分、メンテナンスの手間も増大。コストダウンを要求されている昨今、そうそうは理想ばかり追っかけてばかりもいられません。
まあ、そういう真実は真実として、やはり「声の大きい」ユーザーさまには必要最小限でいいから対応しておこう、ということになったのであります。「声は大きいほど有利」です(^^)。
制作したOSとブラウザは、windows XP(SP2) + IE7.0 ホームページ閲覧に使用したマックマシンは MacBook safari(ver.3.0.4)です。これ以外の組み合わせでは、どうなるか判りません。
これまで全くマック未対応であったわがweb工房のトップページ。右側の画像が mac + safari の世界であります。「同じ世界」を見ているのですが、ゆがんだ世界に見えます。実際にこれをみたら、マックユーザーは怒るよねぇ...と思いつつ、まじめに数えてみたら、右の画像の範囲だけでも次のような不具合がありました。
これじゃ、まともなページとはとても言えません。IEという回路を通してみると正常に見えるが、safariという回路を通してはめちゃくちゃになる。なにやら自分の人生を暗示しているようですが、それは閑話休題。
上の画像の範囲で下記の各機能は正常に動いているように思われます。これらはsafariに全く対応をしていなくても大丈夫、というのではなく、後述するようにjavascriptで以前から少しづつ対応してきていることによるものかも知れません。
当初のトップページのヘッダ部のタグを簡略化すると下記のように、各パーツは「web標準」の手法を適用し<div></div>を用いて配置しています(スタイルは width/float等の主要なもののみ記述、枠線は省略)。
(htmlファイル:<div>によるパーツ(オブジェクト)の配置これによって、上記はIEでは次のように表示されます。IE6.0とIE7.0では若干枠の幅が違っています(画像)。 ところがこのままですと、mac + safari では枠が重なります(画像)。
実は、IEではスタイルシートで<div>の高さ(height)を指定しなくても、ちゃんと内容を記述した分の高さを確保してくれるのですが、safariでは高さを指定しなければならない、というのがタネ明かしです。高さ指定が省略できれば、内容を書き増したりしたときに高さ指定をし直さなくてもいいので便利なのですが。IE と safari で表示が乱れるときは、まず、この高さ指定を調整して下さい。
3つの<div>のスタイルシート設定に height="50px"を付加すると下記のように表示されます。IEでもsafariでもほぼ同じように表示されているはずです。
この問題はweb標準に即してレイアウトしたために生じる問題で、実は従来からの方法のように表組み(<table>〜</table>)したときは起こらない、というのがなにやら「微妙」なこころもちであります。以前、制作した「古い」ホームページではほとんど手を入れることなく mac+safari で閲覧できたりします(^^;)。
各パーツ(オブジェクト)の表示位置が微妙に異なる場合等では、オブジェクトの余白(paddingとmargin)の指定方法を疑って下さい。margin指定していたが、padding指定をし直したら正常化することが多々ありました。ヘッダ部の横並びのメニューがの不具合は、この方法により修正されました。まあ、他のブラウザに比べて「IE6.0でのpaddingとwidthの解釈が異常すぎる」ので、IE6.0とIE7.0でも大きく異なっているのが現実でありますが。
この部分は、お知らせや新着情報を記述した別のhtmlファイルデータをAjaxで作成したスクリプトで自動読み込みしています。ページ全体を再読み込みするのではなく、この部分だけ読み込むので、サーバーとのアクセス時間が短縮できます。ホームページを動的に更新するのには非常に便利な方法でして、最近、よく使われています。
Ajaxで読み込まれるファイルは基本的にUTF-8であること、とされています。トップページの文字コードはShift-JISですが、IEでは問題なく表示されますが、afari では字化けします。トップページ自体をUTF-8で記述すれは解決するかもしれませんか、まあ、windows派なもので(^^;)ゞ
この字化けを回避するためにいろいろな方法があって、結構、難しい方法です。ところが、実は別のhtmlファイルをtxtファイルに拡張子を変更すると、mac + safari では文字化けしなくなります。これは実際にいろいろ実験してみて判ったことでして、理論的な裏付けは判然としません。今回はこの方法により対処しました。
ページ数が増えたときのメンテナンスの効率化のために、ヘッダ部とフッタ部を共通化してajax によって別のheader/footerファイルからのデータ読み込むことにしています。将来、この部分が変われば、別のファイルを変更するだけですべてのページが書き換わります。
実はトップページの画像ではヘッダ部が字化けしていませんが、これは別ファイルからはオブジェクのタグのみ読み込んでおき、その後でjavascriptで英数文字・日本語を書き込んでいるため、字化けすることはありませんでした。。しかし、文字も読み込んでいるフッタ部はしっかり字化けしていました。従いまして、ヘッダ・フッタ部ともデータを読み込んでいる別ファイルは.htmlから.txtに変更ました。
safari というか mac系の javascript は問題が多い、と書くとマックユーザーから「いいやIE のjavascriptがやくざなんだよ」とお叱りを受けそうですが、確かにjavascriptでは留意すべき事項が多いことは事実です。章を新しくしてこのへんを記述してみたいと思います。
javsscriptは、
<a href="javascrit://" onclick="window.close">Window Close</a>
などと記述しておりますが、いろいろ調べてみると safari や firefox では javascript でオープンしたウィンドウのみ閉じることができるとのこと。故に、トップページでは動きませんが、そこからjavascriptでオープンするサブウィンドウでは有効です。IEではなんでも閉じるそうです。
そこで、下記のようなスクリプトに変更します。これはIEとsafariの両方で動きますが、firefoxでも大丈夫だとか。
javsscriptは、
window.external.AddFavorite("http://www.webstudio.jp/","web工房 ホームページ");
ですが、これは元々 IEの独自機能ということですので、safari用として対応のしようがありません。
この部分は、javascriptによりパソコンのシステム時間を読んで日付・時間を書き込んでいます。IEの場合、西暦年は4桁で取得できますが、safariでは下2桁。システムの設定を替えば4桁取得できるのかも知れませんが、まだmacに堪能ではないので、javascript に下記の行を加えて対処しました。
西暦年表示(javascript)以前から用いていたので、今回、トップページの部分で問題は生じませんでしたが、javascripにおいては、オブジェクトの指定方法は次の方法で記述するクセをつけておきましょう。id属性を指定するだけなので間違いは少なくなります。
(javascript:マックに対応するオブジェクト指定)以上のようなさまざまな対応策を適用して、なんとかトップページは左の画像のようになりました。ほぼ、IE7.0と同じ見え方に修正されています。スクリプトも正常に動きます。表示に使用しているフォントが同じでないこともあって、微妙なところで異なっているところがありますが、mac + safari で概ね問題なく閲覧できます。これでマックユーザーに「罵倒される」ことはなくなったと思います(^^)。
web工房のトップページの一部だけでもこれだけの問題が出ますので、実際にはもっと沢山の違いが生じます。とりあえず今回はここまでとしますが、windows + IE 一途のホームページをmac+safari という異質文化に対応させるのは、ホームページを新設する以上の手間ひまと気力・体力が必要なようです。