这一小段JavaScript代码让我抓狂,因为我安装了Windows 8
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用户工作呢?如有任何帮助,我将不胜感激。
Lourens
我认为IE 10使responseXML
成为IE XML DOM文档,而早期版本的IE则是MSXML XML DOM文档。selectSingleNode
和selectNodes
方法是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));
然后在doc
变量上使用selectNodes
,或者您将检查IE提供的方法(如getElementsByTagName和querySelector)是否允许您找到您正在寻找的内容,或者您将需要检查XPath的Javascript实现(如https://github.com/ilinsky/xpath.js)是否允许您编写您想要的查询。