読者です 読者をやめる 読者になる 読者になる

IE6用に作られたサイトは無理してIE8対応しなくても良いのでは?

Javascript

数年前に作られた、サイトの Ajax部分が IE8 では正しく動かないという報告を受け、調査しました。

http://www.microsoft.com/global/ja-jp/windows/PublishingImages/shell/icon_ie8beta.gif

その部分は prototype.js を使っています。色々と調査してみると IE以外のブラウザーでは イベントの元になるアクションをキャンセルする為には W3C DOM Level 3 規格の event.preventDefault() というメソッドを呼び出すのですが、IE では 独自実装の プロパティー event.returnValue に false を代入します。 しかし、なぜか IE8 + prototype.js(1.6.03) ではキャンセルされません!
prototype.js を始めいろいろな関連ライブラリーをバージョンアップしたり、小さなテストコードを書いて実験しましたが原因に辿り着けませんでした。

そんな時、南の方から来た達人が IE8をIE6互換モードで動かしたら良いんじゃない と言われ試してみると上手く動きました。
さらに調べると IE8 (IE9も) は下のようなmeta タグを書くと「互換モードボタン」を押さなくても自動的に IE6互換モードで動作します。

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />

詳しくは META タグと将来の互換性のロック を参照して下さい。



今日の結論:互換モードはプログラマーの省エネ