"IE=edge"が効かなかったときの話


Internet Explorerで互換表示設定を無効化しようとしてハマったので、メモ。

互換表示させたくないHTMLが100ファイルくらいあったので各ファイルの<head>タグの中に下記のコードを書いたところ、一部のファイルだけ互換表示設定が無効化されない現象に遭遇した。

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

この設定が有効でないとCSSやらJavaScriptやらが正常に動作せず、レイアウトが崩れてしまって困る。

レイアウトが崩れてしまうHTMLと正常に表示されるHTMLを比べてみたところ、前者のソースには<meta http-equiv="X-UA-Compatible" content="IE=edge"/>の出現位置が後ろの方にあるという特徴があることに気づいた。

文字エンコーディングの指定はファイルの先頭から1024バイトまでに含まれるべきという話も参考にして試行錯誤して出した結論。

どうやら、<meta http-equiv="X-UA-Compatible" content="IE=edge"/>はファイルの先頭から4096バイトまでに含まれるべきであるらしい。
最後の文字の>が4096バイト目ならばOK。4097バイト目ならNG。

今回調べた環境

Internet Explorer バージョン11.0.9600.18921

参考

IE対策:互換表示させない。