IE ドキュメントモードの歴史
互換モード
IE6 からレンダリング方法を選択できるようになった。
Quirks モード(デフォルト)
- 旧バージョン(IE5)と同じようにページを表示する。
- 適切な DOCTYPE ディレクティブがない場合にこのモードになる。
標準モード (Strict モード)
- 業界標準を最大限サポートする。
- 適切な DOCTYPE ディレクティブある場合のみこのモードになる。
歴史的経緯
IE6 当時は DOCTYPE ディレクティブのあるサイトはほとんど無かったため、多くのサイトは Quirks モードでレンダリングされた。開発者は必要に応じて DOCTYPE に対応することで標準モードへ移行することができた。
IE7 が出ると標準モードのレンダリングエンジンは IE7 になった。しかしブラウザの判定で IE6 に依存した方式を採用していたサイトは IE7 の登場により IE を正しく判定できなくなってしまった。IE7 には Quirks モードと標準モード(IE7 レンダリングエンジン)のみが搭載されていたため、IE6 をターゲットとしていたサイトは修正を迫られた。
IE8 はこれまでの経緯を踏まえ、「ドキュメント互換性」という概念を導入した。これにより X-UA-Compatible
ヘッダにより過去のバージョンのレンダリング方法を指定できるようになった。
ドキュメントモード
IE8 以降、複数のドキュメントモードをサポートするようになった。
これらは X-UA-Compatible ヘッダで設定する。IE7 標準モードにしたい場合は次のようにする。
<meta http-equiv="X-UA-Compatible" content="IE=7">
content 属性のパターン
content 属性 | ドキュメントモード |
---|---|
IE=5 | 必ず IE5 Quirks モードとして動作する。 これは IE5.0、5.5、6.0 と互換性を持ったドキュメントモードで、IE6 相当の動作が必要な場合に選択する。 |
IE=7 | 必ず IE7 標準モードを選択する。 なお IE6 というモードはない。IE7 が登場した時に IE6 の標準モードは IE7 に置き換えられ、以降選択することができない。IE6 が必要な場合は IE5 Quirks モードを選ぶ。 |
IE=8 | 必ず IE8 標準モードを選択する |
IE=9 | 必ず IE9 標準モードを選択する |
IE=10 | 必ず IE10 標準モードを選択する |
IE=11 | 必ず IE11 標準モードを選択する |
IE=EmulateIE7 | DOCTYPE宣言に応じて IE7 標準モードか IE5 Quirks モードを選択する |
IE=EmulateIE8 | DOCTYPE宣言に応じて IE8 標準モードか IE5 Quirks モードを選択する |
IE=EmulateIE9 | DOCTYPE宣言に応じて IE9 標準モードか IE5 Quirks モードを選択する |
IE=EmulateIE10 | DOCTYPE 宣言に応じて IE10 標準モードか IE10 Quirks モード を選択する。IE5 Quirks モードが必要な場合、IE=5 を指定する(IE5 Quirks モード)。 |
IE=EmulateIE11 | DOCTYPE 宣言に応じて IE11 標準モードか IE11 Quirks モード を選択する。IE5 Quirks モードが必要な場合、IE=5 を指定する(IE5 Quirks モード)。 |
IE=edge | 利用できる最新の IE のモードで動作する |
紛らわしい "Quirks モード"
IE9 までの Quirks モードは IE5 Quirks モードと呼ばれ、後方互換性のために用意されているもの。
一方 IE10 以降の Quirks モードは後方互換性が目的ではなく、他社製ブラウザーとの相互運用性を高めるために導入されたもの。つまり Web 標準を追求するのではなく横並びの他ブラウザとの相違を軽減することが目的となっている。
参考:
- ドキュメント互換性の定義
- IEブラウザの互換性問題の緩和方法 - とあるコンサルタントのつぶやき - Site Home - MSDN Blogs
- InternetExplorer11_MigrationGuide.docx(Word ファイル直リンク)
- [MS-IEDOCO]: X-UA-Compatibility Meta Tag and HTTP Response Header
Internet ExplorerはIE特化アプリから一時的に日本を救ってくれたけど次回はもう助けてくれないよという警告