根据 HTML 规范(http://www.w3.org/TR/html5/browsers.html#named-access-on-the-window-object),窗口对象应该动态包含页面中的元素被“命名”。在我的例子中,具有关联的 id 属性的输入元素应该存在于 Window 对象上。
但是,根据下面的 HTML(通过 HTML5 验证),如果输入元素位于表单元素下方,IE 将无法通过它在窗口对象上的 id 识别输入元素。
以下 HTML 将在 IE8 和 IE10 中显示“对象”警报,然后显示“未定义”警报。为什么?在 FireFox 和 Google Chrome 中,它显示“对象”的两个警报。有什么我想念的吗?
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>HTML5 Standards mode</title>
</head>
<body>
<input type="button" id="outerbutton" value="outer button">
<form>
<input type="button" id="innerbutton" value="inner button">
</form>
<script>
window.onload = function(e)
{
alert(typeof outerbutton);
alert(typeof innerbutton);
};
</script>
</body>
</html>