IE10似乎破坏了/改变了HTML的层次结构。最好用下面的示例来解释这一点
<html>
<head>
<title>IE10 example</title>
</head>
<body>
<script language="javascript">
function submitForm() {
var temp;
temp = document.getElementById("myTable");
alert(temp.innerHTML);
}
</script>
<table id="myTable">
<thead>
<tr>
<td>First Name</td><td>Last Name</td>
</tr>
</thead>
<tbody >
<form action="/users" method="post" name="userform">
<input type="hidden" name="userName">
<tr>
<td>admin</td>
</tr>
<tr>
<td>SA</td>
</tr>
</form>
</tbody>
</table>
<script language="javascript">
submitForm()
</script>
</body>
</html>如果将上面的超文本标记语言页面加载到IE10中,表单节点将在输入节点之前关闭。因此,对任何输入节点的任何访问都会失败,并出现NULL/undefined错误。这个超文本标记语言可以在Mozilla,Chrome,IE9,ie10--可比较性模式下正常加载。
这是预期的行为吗?感谢您的时间和帮助
发布于 2012-12-21 03:13:14
这并不是IE10独有的。DOM在IE10、Chrome、Opera和火狐中也是一样的。通过复制上面显示的标记,在我的测试输入之前关闭表单:
https://dl.dropbox.com/u/444684/stackoverflow/test.html
第一个问题是缺少doctype。这将使浏览器进入怪异模式,这意味着它不会按照标准渲染,并且规则会变得更加灰暗。为了获得更好的跨浏览器一致性,您应该在文档顶部添加一个HTML5文档类型:
下一个问题是不允许表单是tbody元素的直接子元素。因为它是无效的,所以它遵循HTML5解析算法并关闭表单。要避免这种情况,请移动窗体,例如使其成为表的父级。
https://dl.dropbox.com/u/444684/stackoverflow/test2.html
如果您查看浏览器调试器,例如IE中的F12,您将看到输入现在位于表单中。您也不再需要警告,因为DOM检查器是一种更容易调试的方法。
https://stackoverflow.com/questions/13977689
复制相似问题