我有一个问题,让简单的HTML5DOM处理在MSIE9上工作。它在没有DOCTYPE标记的情况下工作。但由于包含了DOCTYPE html(表示html5),MSIE 9不会处理它。有没有其他方法可以让我这样做,使它作为html5工作?
代码试图通过获取DOM节点并通过标记名从中获取元素来创建nodeList。简单的测试是显示nodeList.length。这是我所构建的应用程序中一个较大问题的一个小示例。但我认为,在这里展示这一小段代码比展示我的整个应用程序要好。
下面的代码适用于Chrome、Firefox、Opera以及其他可能的应用程序。。。但不是在MSIE 9上。我也有它在线,所以你可以点击this link(只要我在运行)并尝试它;然后复制地址在其他浏览器中尝试它。我也删除了“”然后在MSIE中工作。但是没有浏览器会知道它是html5(如果我理解正确的话)。

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript">
function setOptions () {

  var ndiv = document.getElementById("products");
  var OptionList = ndiv.getElementsByTagName("option");

 document.getElementById("dump").innerHTML = "OptionList.length " + OptionList.length;

}
</script>
</head>
<body onload="setOptions()">
<br/><br/><br/>
<div id="dump"></div>
<div id="products" style="display:none">
  <option>MOTOR</option>
  <option>CHASSI</option>
  <option>ELECTRIC</option>
  <option>BRAKES</option>
  <option>TIRES</option>
</div>
</body>
</html>

最佳答案

您使用的标记无效。选项元素不应该是div元素的子元素。如果将ID为products的div元素改为select元素,它将按预期工作。
由于IE9没有HTML5解析器,您无法保证无效标记会发生什么,并且可能会出现这样的意外结果。IE10有一个HTML5解析器,因此可以与其他浏览器一起处理错误情况。

关于javascript - html5 msie javascript使DOM处理在MSIE中工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14381382/

10-09 14:34