Следующий код
function go() {
console.log(document.querySelectorAll("*|*"));
}
<div>Some div</div>
<a:div>Smth from a</a:div>
<b:any>Smth from b</b:any>
<p>Just a p</p>
<button onclick="go()">Find</button>
находит все элементы на странице:
0: html
1: head
2: style
3: body
4: div
5: a:div
6: b:any
7: p
8: button
9: script
length: 10
А как найти только те, у которых задан нестандартный namespace?
0: a:div
1: b:any
length: 2
Могу на JQuery элементы с заранее известными нэймспейсами нати.
function go() {
$('.result').append($('a\\:div'));
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>Some div</div>
<a:div>Smth from a</a:div>
<b:any>Smth from b</b:any>
<p>Just a p</p>
<button onclick="go()">Find</button>
<div class="result"></div>
Можно и без JQuery:
function go() {
var elements = document.getElementsByTagNameNS('*','*');
found = [];
[].forEach.call(elements, function(element) {
if (element.nodeName.indexOf(':') > 0) {
found.push(element);
}
});
found.forEach(function(element) {
document.getElementById("result").appendChild(element);
});
}
В сниппете код почему-то не работает, а при загрузке страницы из файла в Google Chrome — работает.
Почему вы не используете JQuery?
Сделал так:
function go() {
console.log(Array.prototype.filter.call(document.querySelectorAll("*|*"), function(el) {
return ~el.tagName.indexOf(":");
}));
}
<div>Some div</div>
<a:div>Smth from a</a:div>
<b:any>Smth from b</b:any>
<p>Just a p</p>
<button onclick="go()">Find</button>
Продвижение своими сайтами как стратегия роста и независимости