君たちは永遠にそいつらより若い

技術と音楽と日々のこと。

IE8, IE9 である環境(ドメイン)でだけ勝手に互換表示になる



IE の互換機能ドキュメントモード・ブラウザモードの違い という前座の記事を書きましたが、本当に書きたかったのは、こっちの話です…!

状況

以下のような状況で、ある環境(ドメイン)でだけIE8, IE9の表示崩れが起きる現象に当たることがあります。

  • デプロイしているコードは同じ
  • ヘッダにも疑わしい変化は無い
  • 違うのはドメインだけ

調べてみると、勝手にIE7互換表示になっている。

原因

以下の二つの条件が重なると、IE8, IE9 は強制的にIE7ドキュメント互換モードでレンダリングします。

ある程度大きいサイトのドメインになると、この親切なリストに登録されていることがあります。そのため、ローカル開発環境では気付かずに、ステージング環境に上げたときに発覚したりします。

詳しくは、 互換表示一覧の概要 をどうぞ。

解決方法

  • Microsoft削除依頼
    • ドメイン以下、全て影響を受けるので、サブドメインに他サービスがあると巻き添えを喰らう
    • Microsoftのレスポンスの速度がわからないので、リスキー!
  • metaタグ(<meta http-equiv="X-UA-Compatible" content="IE=edge" />)を追加
    • 大抵の場合、こちらの対応になるが、UserAgent について注意が必要
    • Google Chrome Frameの開発が終了 したので、 <meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1"> と書く必要が無くなったかなと思っています。

この場合は、上記の方法で解決してくださいな。ただし、

metaタグを使った解決をした場合は、以降 UserAgent に注意!!!!

例えば、<meta http-equiv="X-UA-Compatible" content="edge" />を追加したページをIE9で見ると、

ドキュメントモード:IE9標準 ブラウザモード:IE9互換表示

になります。ドキュメントモードは無事修正されましたが、 UserAgent を司るブラウザモードがIE9でなく、IE9互換表示です。つまり、IE9なのに、UserAgent が MSIE 9.0 が含まれなくなる。

参考: IE の互換機能ドキュメントモード・ブラウザモードの違い

  • IE9開発者ツールでブラウザモードを変更した場合のUAの変化

この辺りの理不尽さを把握した上で、UA振り分けを書きましょう^^という、お話でした。