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">
  • HTTPヘッダー
  • 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