Если кому-то нужно это сделать без jQuery, просто с обычным Javascript и для Google Chrome (webkit), это единственный способ заставить его работать после многих исследований и тестирования.
blockquote>
parentNode.getElementsByTagNameNS("*", "name");
Это будет работать для извлечения следующего узла:
<prefix:name>
. Как вы видите, префикс или пространство имен опущено, и оно будет соответствовать элементам с разными пространствами имен, если имя тегаname
. Но, надеюсь, это не будет проблемой для вас.Ничего из этого не сработало для меня (я разрабатываю расширение Google Chrome):
getElementsByTagNameNS("prefix", "name")
getElementsByTagName("prefix:name")
getElementsByTagName("prefix\\:name")
getElementsByTagName("name")
Правка : после некоторого сна я нашел рабочее обходное решение :) Эта функция возвращает первый узел, соответствующий полному
nodeName
, например<prefix:name>
:// Helper function for nodes names that include a prefix and a colon, such as "<yt:rating>" function getElementByNodeName(parentNode, nodeName) { var colonIndex = nodeName.indexOf(":"); var tag = nodeName.substr(colonIndex + 1); var nodes = parentNode.getElementsByTagNameNS("*", tag); for (var i = 0; i < nodes.length; i++) { if (nodes[i].nodeName == nodeName) return nodes[i] } return undefined; }
Его можно легко изменить, если вам нужно вернуть все соответствующие элементы. Надеюсь, это поможет!