使用Jquery返回XML字符串的元素在Internet Explorer 9中不起作用

使用jQuery我使用选择器和每个函数来通过XML字符串的命名元素进行迭代。

例如

$("").each(function() { alert("processing elem tag"); }); 

这在FF / Chrome / IE <8中工作正常但在9中失败。 据推测,IE文档中的某些内容不再允许这样做。

它并不打算直接从一个AJAX响应中获取一串XML,例如.responseXML ,在任何情况下都不要担心它。

IE9有bug,它不是RTM质量,它们主要是它们的 bug …我个人不会浪费时间更改(甚至调试) 你的代码,直到它们更完整/稳定。 (意见)不要担心IE9的客户端……他们在安装预发布软件时签署了一个错误的体验。

jQuery不解析XML。 $("")作用是创建一个元素并将其innerHTML属性设置为"" ,它将具有可变且不可预测的结果。

您需要使用浏览器的内置XML解析器来解析XML。 这是一个执行此操作的function。 我没有在IE 9中测试它,但是如果它不起作用我会感到惊讶: 它们已经实现了DOMParser ,所以不像IE <9它将落入第一个分支并且应该工作除非它们弄得一团糟它

 var parseXml; if (window.DOMParser) { parseXml = function(xmlStr) { return ( new window.DOMParser() ).parseFromString(xmlStr, "text/xml"); }; } else if (typeof window.ActiveXObject != "undefined" && new window.ActiveXObject("Microsoft.XMLDOM")) { parseXml = function(xmlStr) { var xmlDoc = new window.ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async = "false"; xmlDoc.loadXML(xmlStr); return xmlDoc; }; } else { parseXml = function() { return null; } } var xmlStr = ""; var xmlDoc = parseXml(xmlStr); $(xmlDoc).each(function() { alert("processing elem tag"); });