IE9のブラウザーモードとドキュメントモード
IEBlogでIE9のブラウザーモードとドキュメントモードについての詳しいエントリーを発見したので内容をメモ。
via IE's Compatibility Features for Site Developers - IEBlog
ブラウザーモード
IE8からの機能。このモードでブラウザの挙動が決定される。
- サーバーに送られるユーザーエージェント文字列
- Conditional Commentsの評価結果
- デフォルトのドキュメントモード(後述)
ブラウザーモードの変更方法
ブラウザーモードは利用者が任意の設定を行うことが可能。
- 開発者ツールのブラウザーモードタブで変更
- アドレスバー横の互換表示ボタンで変更
基本的にはそのバージョンの標準準拠モードだが、IE内部で互換表示されるサイトのリストを持っており、そのリストに一致するサイトでは自動的に互換表示モードとなる。なおリストはIE8 or IE9のアドレスバーに以下入力することで確認が可能。
res://iecompat.dll/iecompatdata.xml
IE9のブラウザーモード
- IE9標準準拠モード
標準のモード
- IE9互換表示モード
IE7として動作するがUAには「Trident/5.0」の文字列が含まれる(IE9である判別が可能) 互換表示ボタンを押した場合の表示と同じとなる
- IE8モード
IE8として動作する
- IE7モード
IE7として動作する
なおIE8のブラウザーモードはIE8標準準拠モード、IE8互換表示モード、IE7モードの3つ。
ドキュメントモード
レンダリングエンジン(Trident engine)の挙動が決定される。
- IE9標準モード
- IE8標準モード
- IE7標準モード
- Quirksモード
標準とついているモードはDOCTYPEがstrictもしくはunknownのケース、QuirksモードはDOCTYPEがない、もしくはQuirks doctypeのケースで適用される。Quirksモードは後方互換というわけでIE5およびQuirksモードのIE6,7,8と同じレンダリングとなる。なお現在どのブラウザーモード、ドキュメントモードで動作しているかは開発者ツールを開くことで確認可能。
ドキュメントモードの変更方法
サイトデベロッパーがサイト訪問者に対してどのドキュメントモードでレンダリングしてもらうかがハンドリング可能。HTTPヘッダーもしくはmetaタグに記述する。
- metaタグ
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
X-UA-Compatible: IE=EmulateIE7
あ、もちろんブラウザーモード同様、開発者ツールで利用者は任意のドキュメントモードに変更もできる。
ドキュメントモードの設定値
metaタグおよびHTTPヘッダーの「IE=*」の*部分に指定できる値は以下。
- EmulateIE9
- EmulateIE8
- EmulateIE7
- IE9
- IE8
- IE7
- IE5
Emulateとついている値はDOCTYPEによってレンダリングモードが決定する。DOCTYPEがない、もしくはQuirks doctypeでQuirksモード、それ以外でそれぞれの標準モード。
IE9, IE8, IE7の値はDOCTYPEは無視されそれぞれの標準モードとなり、IE5が指定された場合はQuirksモードとなる。
値は複数記述することが出来、例えば以下指定を行うとIE8ではEmulateIE7が適用され、IE9ではEmulateIE9が適用される。
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7; IE=EmulateIE9">
その他
ブラウザーモードによりドキュメントモードが決定され、ブラウザーモードをIE9互換表示とすればドキュメントモードはIE7標準モードとなる。
なお開発者ツールでブラウザーモードをIE7とした場合ドキュメントモードはIE8以上を選択できない。またブラウザーモードをIE9互換表示モード、ドキュメントモードをIE9といういりくったモード設定も可能だが誰が得するかは不明。

Comment