QuirksModeのInternetExplorerに通常モードのIEとは異なるJavaScript実装があるかどうかを尋ねたいと思います(doctypeが正しく定義されている場合)。
JavaScriptコードがQuirksModeと通常のIEモードで異なる動作をする可能性はありますか?
QuirksModeのInternetExplorerに通常モードのIEとは異なるJavaScript実装があるかどうかを尋ねたいと思います(doctypeが正しく定義されている場合)。
JavaScriptコードがQuirksModeと通常のIEモードで異なる動作をする可能性はありますか?
うん。
最も顕著な違いの1つは、クァークズモードでは、BODY(document.body)がルート要素と見なされるのに対し、標準モード(およびその意図)では、ルート要素はHTML(document.documentElement)であるということです。
これは、たとえば、ビューポートの寸法が通常計算される方法に影響します。標準モードではdocument.documentElement.clientHeight
、癖のあるときdocument.body.clientHeight
に、ビューポートの高さを取得するためにを使用します。
この動作の検出は簡単です---ルート要素ではなく、代わりにその本体を使用する必要があることdocument.documentElement.clientHeight == 0
がわかります。documentElement
そしてもちろん、ユニットレスCSS値の割り当てなど、他の通常のクァークズモードの不一致は、異なる結果をもたらします。癖がある場合、そのような値は従来は正常に割り当てられますが、標準モードでは無視されます。
JavaScriptは異なった振る舞いをするべきではありません。ただし、JavaScriptが動作するDOMオブジェクトの動作は異なる場合があります。
<a name="foo">
確かに、Internet Explorer 8では、要求されたときに完全な標準モードが取得できなくなりdocument.getElementById('foo')
、(IIRC)setAttribute
とその友人が修正されます。