« Safariと画像オブジェクトのonloadイベント | トップページ | Mac版IEでだけドロップキャップが文字化け »

2006/09/09

Mac版IEとCSSハック(@importに関するバグの利用)



【格安パソコンなら!ソーテックオンラインショップ!】

Mac版IEだけスタイルシートが反映されないケースがあります。その理由の一つは、以下のようなケースです。@importの際に、「@import 'import.css';」のように、シングル・クォートを使うと、Mac版IEでは読み込まれません。「@import "import.css";」のように、ダブル・クォートを必ず使わなければなりません。

同様に、「@import url('import.css');」は不可です。サーバのエラーログには、Mac版IEでのアクセスの後、

[Sat Sep 09 17:56:57 2006] [error] [client 192.168.11.2] File does not exist: F:/homepage/hogehoge/'import.css', referer: http://hogehoge/import.html

のようなログが残ります(上の例は、Windows XP + Apache 2.0.54で)。つまり、Mac版IEでは、ダブル・クォートを使って、「@import url("import.css");」ならimport.cssを探しに行きますし(正常動作)、ダブル・クォート無しで、「@import url(import.css);」」にしても、import.cssを探しに行きます(正常動作)が、シングルクォートが使われていると、「'import.css'」というファイルを探しに行きます。「.css'」という拡張子のファイルがどのように処理されるかわかりませんが、とにかくそのようなファイル名のファイルが存在しないので、「File does not exist」というエラーログが残るわけです。

この不具合は、シングル・クォートを使わずにダブル・クォートを使うだけで解決できますし、逆に、Mac版IEで特定のスタイルシートを読み込ませない・スタイルシートを適用させないようにするための手段として、利用されているようです。たとえば、毎日放送の「情熱大陸」のホームページでは、この手法が用いられています(2006年9月9日現在)。

CSSハックとも呼ばれるこの手の手法は、正直なところ、好きではありませんが、Mac版IEの場合、この不具合が将来解決される心配は限りなくゼロですから(そもそも公式的には、新規配布が中止になっています。)、IE6に対するCSSハックがIE7配布でアダになるケース(参照:「Internet Explorer 7で使えなくなるCSSハック « Odysseygate.com」「Internet Explorer 7ベータ2の不具合からWebデザイン業界の混乱が見えてきた」)のようなことは、まず起こり得ないでしょうから、Mac版IEに対するCSSハックはなかなか使える手法だと思います。

私はJavaScriptでもPHPでも何でも(エスケープ処理が増える結果になっても)基本的にはダブル・クォートを使うようにしているため(SQL文を書くときはさすがに、シングル・クォートも使っています。)、この不具合の存在は長らくの間知りませんでしたが、今日、たまたま、ネット上でそのような質問がなされているのを見かけたものですから、まとめておきます。



|

« Safariと画像オブジェクトのonloadイベント | トップページ | Mac版IEでだけドロップキャップが文字化け »

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/67411/11825509

この記事へのトラックバック一覧です: Mac版IEとCSSハック(@importに関するバグの利用):

« Safariと画像オブジェクトのonloadイベント | トップページ | Mac版IEでだけドロップキャップが文字化け »