Próbuję napisać skryptozakładkę, która wywołuje funkcję doSomething(textNode)
we wszystkich wystąpieniach widocznego tekstu na dokumencie.Znajdź wszystkie węzły tekstowe
doSomething()
, dla zabawy, zamienia każde słowo na "derp", zastępując textContent z przekazywanego w nim elementu tekstowego. Jednak powoduje to, że niektóre textNodes, które są puste, aby mieć w nich słowa, więc łamie strony internetowej.
Czy istnieje sposób wywoływania doSomething()
tylko na każdym węźle tekstowym zawierającym wyrazy?
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);