1

自从我安装了 Windows 8 后,这段小小的 JavaScript 代码让我很生气

xmlDoc=http_request.responseXML.documentElement;
var nodes = xmlDoc.selectNodes('/rfp_object/category');

直到那一刻,多年来一切都运行良好,但现在我在使用 Windows 8 时遇到了麻烦。错误显示:该对象不支持属性或方法 selectNodes。

在 Chrome、Firefox、Safari 和 Windows Vista 中,它符合我的预期。但在 Windows 8 下不行。更奇特的是,它在 XP 服务器上的开发中运行良好,但在 Windows Server 2008 上的生产中却不行。

将 selectNodes 更改为 getElementsByTagName('category') 在这种情况下效果很好,但不是一种选择,因为我需要在其他情况下过滤数据。

那么我必须做些什么,才能让它像以前一样为 Windows8 用户工作。任何帮助将不胜感激。

洛伦斯

4

1 回答 1

0

我认为 IE 10 是responseXML一个 IE XML DOM 文档,而早期版本的 IE 是一个 MSXML XML DOM 文档。方法selectSingleNodeselectNodes是 MSXML DOM API 的一部分,但不是 IE DOM API 的一部分。我不认为 IE 为其 DOM 文档提供 XPath 支持,因此您需要决定是否要将其转换responseXML为 MSXML DOM 文档

var doc = new ActiveXObject('Msxml2.DOMDocument.6.0');
doc.loadXML(new XMLSerializer().serializeToString(http_request.responseXML));

然后selectNodesdoc变量上使用,或者您将检查 IE 提供的方法,如 getElementsByTagName 和 querySelector 是否允许您找到您要查找的内容,或者您​​需要检查 XPath 的 Javascript 实现,如https://github.com/ilinsky /xpath.js允许您编写所需的查询。

于 2013-03-07T09:47:48.513 回答