【问题标题】:Browser compatibility issues with JavaScript and jQuery Selectors [duplicate]JavaScript 和 jQuery 选择器的浏览器兼容性问题 [重复]
【发布时间】:2016-05-25 13:01:34
【问题描述】:

我试图在来自 AJAX 调用的 XML 响应中查找元素,但我发现标签名称有点奇怪。这些标签导致我的选择器出现问题。

我特别要查找的 XML 元素是 <d:Department>。在 Chrome 中使用 jQuery,我可以通过 $(xml).find('Department') 找到这个元素。 jQuery 在 IE 中找不到元素。

使用 JavaScript,我可以使用 xml.getElementsByTagName('Department') 在 Chrome 中获取元素。在 IE 中我必须使用xml.getElementsByTagName('d:Department')

有没有一种方法可以在两个浏览器中使用 JavaScript 或 jQuery 获取此元素,而无需查找两个标签名称?

【问题讨论】:

    标签: javascript jquery google-chrome internet-explorer compatibility


    【解决方案1】:

    jQuery:

    您使用的是什么版本的 jQuery?

    注意当前的 IE 支持:

    • jQuery 1.x Internet Explorer 6+
    • jQuery 2.x Internet Explorer 9+

    尝试在 find 方法中包含命名空间,如下所示:

    $(xml).find('d\\:Department');
    

    这在jQuery XML parsing with namespaces中有解释

    Javascript:

    尝试像这样使用 getElementsByTagNameNS():

    xml.getElementsByTagNameNS("d", "Department");
    

    见:http://www.w3schools.com/xml/met_document_getelementsbytagnamens.asp

    希望这会有所帮助!

    【讨论】:

    • 我仍然无法在 Chrome 和 IE 中使用相同的代码。这最终使它在两者上都以相同的方式工作。 $(rawXml).find('d\\:Department, Department').