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);

questionAnswers(2)

yourAnswerToTheQuestion