Encontre todos os nós de texto
Estou tentando escrever um bookmarklet que chama a funçãodoSomething(textNode)
em todas as instâncias de texto visível no document
doSomething()
, apenas por diversão, substitui cada palavra por "derp" substituindo o textContent do textNode passado para ele. No entanto, isso faz com que alguns TextNodes vazios tenham palavras neles, portanto, eles quebram a página da Web.
Existe uma maneira de ligar paradoSomething()
em apenas todos os TextNode que contenham palavras?
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);