Estoy tratando de escribir un bookmarklet que llame a la función doSomething(textNode)
en todas las instancias de texto visible en el documento.Buscar todos los nodos de texto
doSomething()
, solo por diversión, reemplaza cada palabra con "derp" al reemplazar el textoContenido del textoNode pasado a él. Sin embargo, esto hace que algunos TextNodes que están vacíos tengan palabras en ellos, por lo que rompe la página web.
¿Hay alguna manera de llamar al doSomething()
en cada textNode que tenga palabras en él?
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);