ブラウザのレンダリングモード
Internet Explorer6以降やFireFoxにはHTMLを画面に描画する際に、レンダリングモードというものが存在し、どのモードで動作しているかによって表示が異る。
モードにはQuirks(互換)モード、Standard(標準)モード(Strict モードと呼ばれる場合もある)がある。Quirksモードでは昔からある標準に準拠していないようなページでも、それなりに表示を行い、StandardモードではHTML/CSSの仕様に従った表示を行う。
Quirksモードでの動作の違いは以下を参照。
また、JavaScriptのCSSプロパティでモードによって返す値が変わるものもある。
例: document.body.clientWidth, document.body.clientHeight
Standards Modeで動作している場合、ドキュメントの幅、高さが返される。
Quirksモードではウィンドウの幅、高さが返される。
モードの決定
ブラウザがどちらのモードで動作するかは、HTML先頭のDOCTYPE 宣言により決まる。どのようにモードが決められるかは以下を参照。
(*1) FireFoxではQuirks Mode,Standard Modeの他にAlmost Standards Modeが存在する。リンク先URLでは、Full Standards,Almost Standards,Quirksの3つのモードについて説明されている。Full Standardsが一般にいうStandard(Strict)モードのことだと思われる。DOCTYPE宣言とモードの例:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!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"を返す。
参考: