浏览器支持getElementsByTagNameNS

时间:2011-12-04 20:46:38

标签: javascript xml dom cross-browser

哪些浏览器/版本支持getElementsByTagNameNS(),以及支持的范围是多少?我似乎无法找到一个很好的参考。

[编辑]我对一个完整的参考感兴趣,但我的当前需求是从AJAX调用返回的namespaced xml(jQuery似乎没有处理btw)。

3 个答案:

答案 0 :(得分:2)

Sitepoint says Firefox版本1.5,Safari版本3,Opera版本9。

低于3.6的Firefox版本进行了不区分大小写的搜索,即corrected in version 3.6

Microsoft claims从IE9开始支持它。但是,according to Dottoro,这仅适用于HTML文档。我不确定你是否真的不相信Dottoro,因为无论如何选择命名空间对HTML文档都没有意义。 如果不支持getElementsByTagNameNS,您应该能够使用XPath。但是,Wrappers是必需的,因为IE不支持标准API - 请参阅YaldexNCZOnline以获取有关如何使IE合作的提示。或者请微软支持。

我建议您在计划在网页的DOM上使用该功能时,确保XHTML文档实际上已经提供了XML内容类型。

Chromium 14也支持该方法(与旧的Safari版本相比,尊重命名空间)。支持可能很久以前,我只是不知道最早支持的Chrome / Chromium版本。

似乎所有浏览器都支持DOM Level 3 XPath。如果存在问题,请使用XPath替换对getElementsByTagNameNS的调用。有关浏览器支持的介绍和说明,请参阅NCZOnline

答案 1 :(得分:2)

我知道这是旧的,但这可能对某人有用。您可以在IE中使用普通的旧getElementsByTagName。请致电node.getElementsByTagNameNS('someNamespace', 'someNodeName')

,而不是致电node.getElementsByTagName('someNamespace:someNodeName')

或使用以下垫片:

var getElementsByTagNameNS = function(node, ns, tagName) {
  if (node.getElementsByTagNameNS) {
      return node.getElementsByTagNameNS(ns, tagName);
  }

  return node.getElementsByTagName(ns + ':' + tagName);
};

并称之为:

getElementsByTagNameNS(someNode, 'someNamespace', 'someNodeName');

答案 2 :(得分:0)

你看过this reference了吗?

具体而言,here