У меня есть целая библиотека JavaScript DOM / Ajax, которую я написал с нуля в 2005 году. Она отлично работает со всеми основными браузерами.Я только что протестировал его с FF9 и Chrome 16. В 2005 году он даже работал с IE6.Теперь IE9 делает чепуху.
Мой JavaScript общается с сервером с помощью Ajax.Мой сервер отправляет обратно XML с типом контента text/xml
.Мой JavaScript просматривает это дерево XML DOM, возвращается в responseXML
и выполняет с ним все необходимые функции.
Мой ответ XML использует пространства имен, поэтому я использую стандартные методы, учитывающие пространство имен DOM, такие как Element.getAttributeNS()
.На IE9 это взрывается с:
TypeError: Object doesn't support property or method 'getAttributeNS'
Конечно, если я отлаживаю JavaScript в IE9 с использованием точки останова, я вижу, что доступные методы responseXML не включают в себя ни один из DOM-методов, поддерживающих пространство имен.
Это безумие, потому что мой DOM-код, прежде чем что-либо делать с Ajax, проверяет документ веб-страницы, чтобы убедиться, что getAttributeNS
поддерживается.В этом случае IE9 поддерживает пространства имен в самом документе веб-страницы (который служил как text/html
, а не application/xhtml+xml
, потому что, как вы уже догадались, IE9 не поддерживает это), но IE9 не поддерживает пространства имен вАякс responseXML
, который служил text/xml
?Что дает?
Есть ли какой-то трюк, который мне нужно использовать, чтобы IE9 поддерживал методы с поддержкой пространства имен в responseXML
дереве DOM?