Я пытаюсь написать букмарклет, который вызывает функцию doSomething(textNode)
для всех экземпляров видимого текста в документе.
doSomething()
, просто для удовольствия, заменяет каждое слово на "derp", заменяя textContent переданного в него textNode. Однако это делает некоторые текстовые ноды пустыми, чтобы иметь в них слова, поэтому он разбивает веб-страницу.
Есть ли способ вызвать doSomething()
только для каждого текстовогоNode, в котором есть слова?
function recurse(element)
{
if (element.childNodes.length > 0)
for (var i = 0; i < element.childNodes.length; i++)
recurse(element.childNodes[i]);
if (element.nodeType == Node.TEXT_NODE && element.nodeValue != '')
doSomething(element);
}
var html = document.getElementsByTagName('html')[0];
recurse(html);