我想问一下QuirksMode中的Internet Explorer在正常模式下是否具有与IE不同的JavaScript实现(正确定义了doctype)。
在QuirksMode和正常IE模式下,JavaScript代码是否可能以不同的方式运行?
答案 0 :(得分:10)
<强>是的强>
最明显的区别之一是,在怪癖模式中,BODY(document.body)被认为是根元素,而在标准模式中(以及它的意图) - root元素是HTML(document.documentElement)。
例如,这会影响通常计算视口尺寸的方式;在标准模式下,可以使用document.documentElement.clientHeight
,而在怪癖中使用document.body.clientHeight
- 来获取视口的高度。
检测此行为很简单 - document.documentElement.clientHeight == 0
- 会告诉我们documentElement
不是根元素,而应该使用该正文。
当然,其他常见的怪癖模式差异,例如分配无单位CSS值,会导致不同的结果。在怪癖中,传统上这些值成功分配,而在标准模式下 - 它们被忽略。
答案 1 :(得分:6)
JavaScript不应该表现得不同;但是,JavaScript操作的DOM对象可能有不同的行为。
答案 2 :(得分:3)
在Internet Explorer 8中,当被问及<a name="foo">
以及其中(IIRC)document.getElementById('foo')
和朋友被修复时,完全标准模式不再获得setAttribute
肯定会发生。