Функция 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 вам написать запрос, который вы хотите.

Другие вопросы по тегам