Internet Explorer 8 への対応について
2009年 5月 1日 (金) / PM 10:42
本日のお話。
会社の人が最近Internet Explorer 8へバージョンアップしたらしく、「ここの表示が崩れるんだが~」っと言ってきたので対応しました。
「IE8は今後増えるからキチンと表示しないのは駄目だよ~」っと言われたのですが、過去に制作したWebサイトにまでキチンと表示する保障はどんなホームページ制作者も出来ませんよ。
私の場合、現在の新規制作場合、Firefox3をメインに使いながらIE6~8を常にチェックしながら構築して、最後にSafari/Chrome/Operaの最新バージョンの表示チェックまでは必ず行っています。
今回のケースは制作当時には無かったブラウザですし、利用者が1%未満の古いブラウザ(IE5など)やマイナーなブラウザまでサポートしていては機能もデザインも制限されてしまいます。
大変なんです。ほんと。
ちなみに今回の問題はnoscriptタグに対して height と display: block; を指定していたが原因で、他のブラウザではJavascriptが有効になっている場合は非表示となるのですが、IE8の場合CSSの指定が優先されてしまう為に発生した問題です。
解決策としては
- <meta http-equiv=”X-UA-Compatible” content=”IE=emulateIE7″ />でIE7表示モードを強制する。
- IE8ハックで対処。
- noscriptタグを削除する。
の3つですが、3番目はJavascriptが有効でない場合の対処を削る事になるので駄目。1番目は簡単な方法ではありますが、必要なページ全てに埋め込む必要があるのでメンドクサイ。と言う事で2番目に。
実際のコードは下記の通り。
html>/**/body noscript {height /*\**/: auto\9}
・・・何だよこれ。
それもひとつの方法ですね。
どの方法が一番めんどくさくないかだと思います(^^;
scriptが動いた時に要素を削除して、別の要素に置き換える様な動作にしては如何でしょうか?