Quirks mode or Standard mode
ブラウザのレンダリングモード
Internet Explorer6以降やFireFoxにはHTMLを画面に描画する際に、レンダリングモードというものが存在し、どのモードで動作しているかによって表示が異る。
モードにはQuirks(互換)モード、Standard(標準)モード(Strict モードと呼ばれる場合もある)がある。Quirksモードでは昔からある標準に準拠していないようなページでも、それなりに表示を行い、StandardモードではHTML/CSSの仕様に従った表示を行う。
- IE - http://msdn2.microsoft.com/en-us/library/bb250395.aspx#cssenhancements_topic2
- ForeFox - http://developer.mozilla.org/ja/docs/Mozilla_Quirks_Mode_Behavior
また、JavaScriptのCSSプロパティでモードによって返す値が変わるものもある。
例: document.body.clientWidth, document.body.clientHeight
Standards Modeで動作している場合、ドキュメントの幅、高さが返される。
Quirksモードではウィンドウの幅、高さが返される。
Standards Modeで動作している場合、ドキュメントの幅、高さが返される。
Quirksモードではウィンドウの幅、高さが返される。
モードの決定
ブラウザがどちらのモードで動作するかは、HTML先頭のDOCTYPE 宣言により決まる。どのようにモードが決められるかは以下を参照。
- IE
- http://msdn2.microsoft.com/en-us/library/bb250395.aspx#cssenhancements_topic2
- http://msdn2.microsoft.com/en-us/library/ms533687.aspx
- FireFox
DOCTYPE宣言とモードの例:
- Standardモードが選択されるケース
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- Quirksモードが選択されるケース
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
document.compatMode
document.compatModeプロパティを使うことで、JavaScriptからどちらのモードで動作しているかを確認できる。document.compatModeがとる値は表1のとおり。
表1 document.compatModeの値
Value |
Mode |
---|---|
BackCompat |
Quirks |
CSS1Compat |
Standard(Strict) |
(*) FireFoxのAlmost Standards Modeでもdocument.compatModeは"CSS1Compat"を返す。
参考:
- IE - http://msdn2.microsoft.com/en-us/library/ms533687.aspx
- FireFox - http://developer.mozilla.org/en/docs/DOM:document.compatMode