Функция XPath selectNodes не работает в Windows 8
Этот небольшой фрагмент кода 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
1 ответ
Я думаю, что IE 10 делает responseXML
документ IE XML DOM, тогда как в более ранних версиях IE это документ MSXML XML DOM. Методы selectSingleNode
а также selectNodes
являются частью API MSXML DOM, но не API IE DOM. Я не думаю, что IE обеспечивает поддержку XPath для своих документов DOM, поэтому вам нужно будет решить, хотите ли вы преобразовать responseXML
в документ MSXML DOM в соответствии с
var doc = new ActiveXObject('Msxml2.DOMDocument.6.0');
doc.loadXML(new XMLSerializer().serializeToString(http_request.responseXML));
затем использовать selectNodes
на doc
переменной или вы проверите, позволяет ли метод IE, такой как getElementsByTagName и querySelector, найти то, что вы ищете, или вам нужно будет проверить, позволяет ли реализация Javascript в XPath, например, https://github.com/ilinsky/xpath.js вам написать запрос, который вы хотите.