IE8のEmulateIE8/EmulateIE7モード
先日リリースされたIE8 Beta 2から、EmulateIE8モードとEmulateIE7モードが追加されたので簡単にまとめ。その他のIE8のレンダリングモードに関してはIE8のレンダリングモードに関するまとめをご覧ください。
さて、今回から新たに搭載されたEmulateIE7モードは、IE8 Beta 1に搭載されていたEmulate IE7ボタンの機能をそのままモードとして定義したものです。また、Beta 1に搭載されていたEmulate IE7ボタンは互換表示ボタンとして正式な機能の1つになりました。
EmulateIE8モードとEmulateIE7モード
EmulateIE8モードとEmulateIE7モードは、他のレンダリングモード指定と同様にmeta要素かHTTPレスポンスヘッダにX-UA-Compatibleを追加して指定します。
// EmulateIE8モードを指定
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8">
// EmulateIE7モードを指定
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
EmulateIE8モードは、IE8として動作するモードになります。つまり通常の「IE8標準準拠モードかQuirksモード」の組み合わせでレンダリングされます。同様にEmulateIE7はIE7として動作するモードになります。こちらの場合は「IE7標準準拠モードかQuirksモード」の組み合わせでレンダリングされることになります。
例えば、ページを読み込んだ際にEmulateIE7が指定された場合は、まずIE7としての動作に切り替わった上で、さらにそこからIE7標準準拠モードかQuirksモードかの切り替えが行われます。Quirksモードには以下の条件にマッチした場合にのみ切り替わります。
- Webページ中にDOCTYPE宣言が存在しない
- HTML3.0以下の文書型を用いている
- HTML4.0 TransitionalまたはFramesetのDOCTYPE宣言にURLを含まない
EmulateIE7モードは、サイト単位で一括してIE7として動作させたい場合に使えそうな印象です。ちょっと調べてみたところ、実際、MSDNのサイトはIE8標準準拠モードでの表示に問題があるようなので、EmulateIE7モードがmeta要素で指定されています。
互換表示ボタン
IE8 Beta 1に搭載されていたEmulate IE7ボタンは互換表示ボタンという形で正式な機能になり、アドレスバーの横に表示されるようになりました。互換表示ボタンをオンにすると、EmulateIE7モードで動作するようになります。しかし、状況によっては互換表示ボタンが表示されない場合もあるようです。互換表示ボタンが表示されない状態は、以下の2つのどちらかの条件にマッチした時におこります。
- meta要素やHTTPレスポンスヘッダにX-UA-Compatibleが指定されている
- Quirksモードに切り替わっている
ページ側からモード指定が行われた場合は、それが優先されるために互換表示ボタンは表示されず、また、Quirksモードに切り替わった場合はEmulateIE7モードでもQuirksモードになるので、互換表示ボタンが表示されないということのようです。
他にも、Beta 2ではLAN内のアドレスに対しては自動的にEmulateIE7モードに切り替わるなどの機能もあるようです。Beta 1の時点でも複雑だったIE8のレンダリングモードは、より複雑でわけがわからない感じになっていますねぇ。