- 2009-03-21 (土) 21:46
- Memo
IE6のドキュメントタイプで表示が変わる互換性モードに頭を抱えたWeb業界の人は多かろうと思いますが、IE8で更に上位版が出たそうです。
でもIE6で悪行を働いた標準・互換モードの変更動作とは違い、IE8で導入されたドキュメント互換性は、
IEがページを表示する際に使用する特定のレンダリングモードの選択を可能にするもので、従来のDOCTYPEの変わりに
新しくMETA要素の X-UA-Compatible により操作が可能に。
簡単にまとめると
IE8だと表示が崩れる…IE7なら崩れないのに…orz
▼
METAタグでIE7モードで表示するよう指示
▼
IE8がその指示に従ってIE7っぽくレンダリング
▼
ウマー(゚д゚)
ということらしい。
その場合のMETAタグは次のようになる(Emulate IE7 互換性モードを指定)
-
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
このメタタグはヘッダーの一番上(titleや他のmetaよりも上)に置かなければならない。
その他のcontent 属性値
- IE=EmulateIE5 → Internet Explorer 5 の動作を模倣
- IE=edge → 使用できる最高のモードを使用
- IE=EmulateIE8も使用可能
各モードをセミコロンで区切って複数のドキュメント モードを指定することも可能らしい。
特定の互換性モードを除外する使い方も可能だが、推奨はされていない。
例:IE7 モードを除外
-
<meta http-equiv="X-UA-Compatible" content="IE=5; IE=8" />
一見便利そうだけど…用途がわからん……
でもやっぱりメインで確認するのはIE6なんだろうな、っていう。
ドキュメント互換性モードの判別
IE8のアドレスバーに以下を入力
-
javascript:alert(document.documentMode);
IE8モードをサポートしている場合、返り値は8になる。
compatMode プロパティとdocumentMode プロパティを併用した
ドキュメントの互換性モードを判別するサンプルソース(公式より)
-
engine = null;
-
if (window.navigator.appName == "Microsoft Internet Explorer")
-
{
-
// This is an IE browser.What mode is the engine in?
-
if (document.documentMode) // IE8
-
engine = document.documentMode;
-
else // IE 5-7
-
{
-
engine = 5; // Assume quirks mode unless proven otherwise
-
if (document.compatMode)
-
{
-
if (document.compatMode == "CSS1Compat")
-
engine = 7; // standards mode
-
}
-
}
-
// the engine variable now contains the document compatibility mode.
-
}
関連記事
- Newer: [mootools] ロールオーバープラグイン
- Older: [icon] 桜の花 (昼)