IE8のレンダリングモードと互換表示

エ・ビスコム・テック・ラボ
2009-04-06 11:20:01
  • このエントリーをはてなブックマークに追加

 レンダリングモードはIE6の時代から採用されてきたDOCTYPE宣言による指定か、IE8で採用されたMETAタグまたはHTTPレスポンスヘッダによる指定で切り替えることができる。

DOCTYPE宣言によるレンダリングモードの指定

 DOCTYPE宣言による指定は、最も基本的なレンダリングモードの指定方法だ。ブラウザはDOCTYPE宣言によってウェブページがどのバージョンのHTMLやXHTMLで記述されているかを知り、それに応じて最適なレンダリングモードを選択する。

 IE8ではDOCTYPE宣言によってIE8 StandardsモードとQuirksモードが切り替わる。まず、QuirksモードになるのはDOCTYPE宣言を以下のように記述した場合だ。

QuirksモードになるDOCTYPE宣言の記述

  • DOCTYPE宣言を記述していない場合
  • HTML3.0以下のDOCTYPE宣言を記述している場合
    • (例)
      
      
  • HTML4.01 Transitional/FramesetのDOCTYPE宣言でシステム識別子(DTDのURL)を記述していない場合
    • (例)
      
      

 上記以外のDOCTYPE宣言を記述すると、いずれの場合もIE8 Standardsモードでの表示となる。

IE8 StandardsモードになるDOCTYPE宣言の記述

  • HTML4.01 Transitional/FramesetのDOCTYPE宣言でシステム識別子(DTDのURL)を記述している場合
    • (例)
      
      
  • HTML4.01 StrictのDOCTYPE宣言を記述している場合
    • (例)
      
      
  • XHTML1.0のDOCTYPE宣言を記述している場合
    • (例)
      
      
  • XMLやその他のDOCTYPE宣言を記述している場合

 なお、DOCTYPE宣言の記述でIE7 Standardsモードになることはない。IE7 Standardsモードで表示するには、後述のMETAタグまたはHTTPレスポンスヘッダによる指定を利用する。

METAタグによるレンダリングモードの指定

 IE8ではMETAタグを利用してレンダリングモードを指定することができ、DOCTYPE宣言による指定よりも優先される。たとえば、IE7 Standardsモードで表示するには次のように指定する。


 レンダリングモードはcontent属性の値によって次のように変わる。

METAタグのcontent属性の値とレンダリングモード
content属性の値レンダリングモード
IE=8IE8 Standardsモードで表示
IE=7IE7 Standardsモードで表示
IE=5Quirksモードで表示
IE=edge最新のレンダリングモードで表示
IE=EmulateIE8DOCTYPE宣言に応じてIE8 StandardsモードまたはQuirksモードで表示
IE=EmulateIE7DOCTYPE宣言に応じてIE7 StandardsモードまたはQuirksモードで表示

HTTPレスポンスヘッダによるレンダリングモードの指定

 METAタグの代わりにHTTPレスポンスヘッダを利用すると、サーバーやディレクトリ単位でレンダリングモードを指定することができる。

 たとえば、.htaccessでHTTPレスポンスヘッダを指定し、IE7 Standardsモードで表示するには次のように指定する。指定できる値はMETAタグと同じだ。

Header set X-UA-Compatible "IE=7"
註:.htaccessによる指定はサーバー環境によっては利用することができない。

 なお、レンダリングモードの指定は、「METAタグ > HTTPレスポンスヘッダ > DOCTYPE宣言」の順に優先度が高い。

  • コメント(3件)
#1 anonymous   2009-04-06 23:51:24
Internet Explorer の [互換表示設定] で [マイクロソフトからの更新された Web サイト一覧を含める]にチェックを入れたときのレンダリングモードの指定が抜けているのではないでしょうか。

ホームページ公開サービスあたりだとサービス主のWebサイトの関係でホームページ公開サービスのドメインも互換表示に設定される事例ががありました。
(少なくとも、@nifty @homepageはnifty.comが互換表示設定に設定されているため、
DOCTYPE宣言でIE8 Standardsモードにしただけでは、IE 7 Standardsモードになっていました。
METAタグを入れることでIE8 Standardsモードで表示されるようになりました。)
#2 anonymous   2009-04-07 04:29:47
これを滑稽と言わずして何を滑稽と言う。ie9ではさらにレンダリングモードが増えるのだろうか。
#3 anonymous   2009-05-20 20:10:28
ほんとだ。サーバ側で

とすると将来 ie9 が出てもそのページはie8モードなのか。。
このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]