Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对GetElementsByTagnames的浏览器支持_Javascript_Xml_Dom_Cross Browser - Fatal编程技术网

Javascript 对GetElementsByTagnames的浏览器支持

Javascript 对GetElementsByTagnames的浏览器支持,javascript,xml,dom,cross-browser,Javascript,Xml,Dom,Cross Browser,哪些浏览器/版本支持GetElementsByTagnames(),支持的程度如何?我似乎找不到好的推荐人 [编辑]我对完整的参考很感兴趣,但我现在需要的是从AJAX调用返回的带名称空间的xml(顺便说一句,jQuery似乎无法处理该调用)。您看了吗 具体来说,Firefox从1.5版开始,Safari从3版开始,Opera从9版开始 低于3.6的Firefox版本进行了不区分大小写的搜索,结果如下所示 从IE9开始支持它。但是,这仅适用于HTML文档。我不确定您是否真的不能信任Dottoro,

哪些浏览器/版本支持GetElementsByTagnames(),支持的程度如何?我似乎找不到好的推荐人

[编辑]我对完整的参考很感兴趣,但我现在需要的是从AJAX调用返回的带名称空间的xml(顺便说一句,jQuery似乎无法处理该调用)。

您看了吗

具体来说,Firefox从1.5版开始,Safari从3版开始,Opera从9版开始

低于3.6的Firefox版本进行了不区分大小写的搜索,结果如下所示

从IE9开始支持它。但是,这仅适用于HTML文档。我不确定您是否真的不能信任Dottoro,因为按名称空间选择对HTML文档没有任何意义。 如果不支持
getelementsbytagnames
,您应该能够使用XPath。但是,由于IE不支持标准API,因此需要包装器——请参阅和,以获取如何让IE合作的提示。或者请求微软的支持

我建议,当您计划在网页的DOM上使用该函数时,确保XHTML文档实际上已使用XML内容类型

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


除了IE之外,似乎所有的浏览器都支持。如果存在问题,请使用XPath替换对
GetElementsByTagnames
的调用。有关浏览器支持的介绍和说明,请参阅。

我知道这是一个老版本,但可能对某些人有用。您只需在IE中使用普通的旧
getElementsByTagName
,而不是调用
node.GetElementsByTagnames('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');

是的,参考资料过期了。您的编辑使它成为一个不同的问题。您的目标应该是在响应上使用XPath。看和。确保使用XML内容类型发送AJAX响应,并使用
responseXML
属性获取XML DOM。我使用responseXML。我可以使用xpath,但您的第三份参考资料中说:“默认情况下,Internet Explorer的xpath引擎不支持名称空间”?有趣的链接,不幸的是,当我遵循参考资料时,我没有得到更多详细信息。Sitepoint和Dottoro,这是我到目前为止得到的(并同意您的评论)。您是否有Chrome/Safari的链接?请注意,在上面的示例中,
ns
应该是名称空间名称而不是URI,但写了这篇文章后,我意识到Firefox实际上只接受URI,因此更好的选择可能是使用
node.getElementsByTagName('namespacename:tagname'))
在整个代码中。另一种选择是使用星号通配符代替URI(可能未知)。因此,您可以使用以下命令修改垫片:return node.getElementsByTagnames('*',tagName.split(':').pop());在实践中,这很好,但它不是一个通用的解决方案,因为它不处理名称空间冲突。不管怎么说,我只是想扔掉这个,以防它能帮助别人。