Браузерная поддержка для getElementsByTagNameNS - PullRequest
4 голосов
/ 05 декабря 2011

Какие браузеры / версии поддерживают getElementsByTagNameNS() и в какой степени?Кажется, я не могу найти хорошую ссылку.

[Edit] Я заинтересован в полной ссылке, но моя непосредственная потребность в пространстве имён xml, возвращаемом из вызова AJAX (который jQuery, похоже, не обрабатываеткстати).

Ответы [ 3 ]

2 голосов
/ 05 декабря 2011

Sitepoint сообщает Firefox начиная с версии 1.5, Safari начиная с версии 3 и Opera начиная с версии 9.

Версии Firefox ниже 3.6 выполняли поиск без учета регистра, который как исправлен в версии 3.6 .

Microsoft заявляет , что она поддерживает IE9. Однако в соответствии с Dottoro , это верно только для документов HTML. Я не уверен, если вы не можете доверять Dottoro, потому что выбор по пространству имен в любом случае не имеет смысла для документов HTML. Вы должны быть в состоянии использовать XPath, если getElementsByTagNameNS не поддерживается. Обертки, тем не менее, необходимы, поскольку IE не поддерживает стандартный API - см. Yaldex и NCZOnline для подсказок, как заставить IE взаимодействовать. Или обратитесь в службу поддержки Microsoft.

Я бы порекомендовал убедиться, что документы XHTML действительно обслуживаются с типом содержимого XML, когда вы планируете использовать функцию в DOM веб-страницы.

Chromium 14 также поддерживает этот метод (и учитывает пространства имен в отличие от старых версий Safari). Поддержка могла быть и раньше, я просто не знаю самую раннюю версию Chrome / Chromium с поддержкой.

Кажется, что все браузеры, кроме IE, поддерживают DOM Level 3 XPath . Используйте XPath для замены вызовов на getElementsByTagNameNS, если есть проблемы с ним. См. NCZOnline для ознакомления и примечаний по поддержке браузера.

2 голосов
/ 08 апреля 2013

Я знаю, что это старый, но это может быть полезно для кого-то. Вы можете просто использовать старый старый getElementsByTagName в IE. Вместо того, чтобы звонить 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');
0 голосов
/ 05 декабря 2011

Вы смотрели на эту ссылку ?

В частности, здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...