Я пытаюсь написать букмарклет, который вызывает функцию doSomething(textNode)
для всех экземпляров видимого текста в документе.
doSomething()
, просто для удовольствия, заменяет каждое слово на «сумасшедший», заменяя textContent переданного в него textNode. Тем не менее, это делает некоторые текстовые узлы пустыми, чтобы в них были слова, поэтому он разрывает веб-страницу.
Можно ли вызвать doSomething()
только для каждого текстового узла, в котором есть слова?
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);