html5 msie javascript让DOM处理在msie中工作

html5 msie javascript让DOM处理在msie中工作,javascript,html,internet-explorer,dom,Javascript,Html,Internet Explorer,Dom,我在MSIE9上使用简单的HTML5DOM处理时遇到了一个问题。它在没有DOCTYPE标记的情况下工作。但是由于包含DOCTYPE html(表示html5),MSIE9不会处理它。有没有其他方法可以让它像html5一样工作 代码试图通过获取DOM节点并通过标记名从中获取元素来创建节点列表。简单的测试是显示nodeList.length。这是我所构建的应用程序中一个较大问题的小示例。但我认为,在这里展示这一小段代码比向您展示我的整个应用程序要好 下面的代码适用于Chrome、Firefox、Op

我在MSIE9上使用简单的HTML5DOM处理时遇到了一个问题。它在没有DOCTYPE标记的情况下工作。但是由于包含DOCTYPE html(表示html5),MSIE9不会处理它。有没有其他方法可以让它像html5一样工作

代码试图通过获取DOM节点并通过标记名从中获取元素来创建节点列表。简单的测试是显示nodeList.length。这是我所构建的应用程序中一个较大问题的小示例。但我认为,在这里展示这一小段代码比向您展示我的整个应用程序要好

下面的代码适用于Chrome、Firefox、Opera和其他浏览器。。。但不是在MSIE9上。我也有它在线,所以你可以点击(只要我在运行)并尝试它;然后复制地址以在其他浏览器中尝试。我还删除了“”,然后它在MSIE中工作。但是没有浏览器会知道它是html5(如果我理解正确的话)


函数setOptions(){
var ndiv=document.getElementById(“产品”);
var OptionList=ndiv.getElementsByTagName(“期权”);
document.getElementById(“dump”).innerHTML=“OptionList.length”+OptionList.length;
}



发动机 查西 电的 制动器 轮胎
您使用的标记无效。选项元素不应是div元素的子元素。如果将ID为products的div元素改为select元素,它将按预期工作


由于IE9没有HTML5解析器,您无法保证无效标记会发生什么,这样的意外结果可能会发生。IE10有一个HTML5解析器,因此可以与其他浏览器一起处理错误情况。

您是否检查过IE9是否支持您正在尝试的操作?IE并没有最新的名声。我不确定它是否能解决您的问题,但它值得您首先修复标记中的错误。使用一个。顺便说一句,名称空间声明<代码>就可以了。jbabey:关于IE的声誉,你是对的。当我在浏览器端工作的时候,没有一天我会对微软一点也不骂人。网络上的信息是混合的。。。微软给出了基于标准的教程和一些对比图表,称IE支持HTML5,最早可追溯到版本7。它需要花费大量的时间,实际上需要对每一件小事进行完整的兼容性测试。伊凡:为什么lang=“en”会有不同?我使用的是扩展拉丁语。@Roger F.Gay我只是说在使用HTML5时不需要名称空间声明。声明您使用的语言仍然是一个好主意。据我所知,
lang
属性指的是页面的语言,而不是特定的字符集。如果页面内容是用拉丁语编写的,您可以使用
lang=“la”
。谢谢。这确实如你所描述的那样有效。关于MSIE版本和HTML5的网页上提供的信息有些混乱,尽管足够的挖掘和清晰的答案并不令人惊讶。看来我可以小心测试,可能至少涵盖MSIE 9。作为后续(也许我会发布另一个问题);我想知道我应该在哪里(哪个MSIE版本)设置我的测试来强制安装Chrome框架或使用另一个浏览器。IE8和更早版本已经被建议:我的开发机器上有IE9,所以我可以在有框架和没有框架的情况下进行测试。所以,这可能对我有用。我个人不喜欢使用铬框。如果你能让它在IE中自然工作,那么你可能应该走这条路。IE9您当然不需要使用镀铬框架。IE8也可能不会给您带来麻烦,除非您依赖于更新的功能。这应该是一个个案基础上的决定。我现在使用html5数据列表。我还没有机会在ie10上测试它,但它在9或更低版本中不受支持。对于IE,我在我的帮助页面上用注释和MSIE部分的链接替换了这个框,如果用户想要使用高级功能,我会建议他们的替代方案。我认为这是最礼貌的方式;不强制用户下载页面。。。甚至连弹出窗口都没有。。。如果愿意,他们甚至可以不使用datalist功能而使用该站点。元数据被设置为使用最佳可用的GCF(如果他们有)。我认为它会在IE10中起作用,因为微软是这么说的。
<!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>