Я делаю расширение для Chrome, чтобы найти строку, если текст в DOM, и заменить ее чем-то другим.Каков наилучший способ обойти весь элемент DOM и заменить текст в DOM.Я думал о том, чтобы поместить document.body
в переменную, а затем обработать ее как очередь, но я запутался, как это сделать. Это мой код:
flag = true;
var word = 'word',//word to replace
queue = [document.body],
curr;
try {
while ((curr = queue.pop()) || flag) {
if (!(curr.textContent.match(word))
continue;
for (var i = 0; i < curr.childNodes.length; ++i) {
if (!flag) break;
switch (curr.childNodes[i].nodeType) {
case Node.TEXT_NODE: // 3
if (curr.childNodes[i].textContent.match(word)) {
curr.childNodes[i].textContent("xxx");//replacing the word
console.log('Found!');
flag = false;
break;
}
break;
case Node.ELEMENT_NODE: // 1
queue.push(curr.childNodes[i]);
break;
}
}
}
} catch (e) {
//
}