我有一个完整的JavaScript DOM / Ajax库,我在2005年从头开始编写。它在所有主流浏览器上都运行良好。我刚刚用FF9和Chrome 16进行了测试。早在2005年,它甚至可以与IE6一起使用。现在IE9正在搞蠢事。
我的JavaScript使用Ajax与服务器对话。我的服务器发送回内容类型为text/xml
的XML。我的JavaScript查看了这个在responseXML
中返回的XML DOM树,并对其进行了处理。
我的响应XML使用名称空间,因此我使用标准DOM名称空间感知方法,例如Element.getAttributeNS()
。在IE9上,这会爆发:
TypeError: Object doesn't support property or method 'getAttributeNS'
果然,如果我使用断点在IE9中调试JavaScript,我会看到responseXML上的可用方法不包含任何名称空间感知的DOM方法。
这很疯狂,因为我的DOM代码在完成任何Ajax之前会检查网页文档以确保支持getAttributeNS
。 IE9是否支持网页文档本身的名称空间(由text/html
提供,而不是application/xhtml+xml
,因为,你猜对了,IE9不支持),但IE9却支持不支持Ajax responseXML
上的名称空间,它被称为text/xml
?是什么给了什么?
我需要一些技巧来让IE9在responseXML
DOM树上支持名称空间感知方法吗?