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