Finde alle text-Knoten
Ich versuche zu schreiben, ein bookmarklet, der die Funktion aufruft doSomething(textNode)
auf alle Instanzen der sichtbare text auf das Dokument.
doSomething()
nur so zum Spaß, ersetzt jedes Wort "derp" durch den Austausch der textContent des textNode an Sie übergeben. Allerdings, dies macht einige textNodes, die leer sind, haben Wörter in Ihnen, so bricht es die web-Seite.
Gibt es eine Möglichkeit zu nennen doSomething()
jeweils eine textNode, der hat Wörter drin?
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);
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ändern Sie diese...
zu diesem...
Diese nutzt die
/\S/
regex, die sucht nach mindestens einem nicht-Leerzeichen.Können Sie definieren müssen weitere was bedeutet "Wörter". Ich nahm es zu bedeuten, dass man nur ohne whitespace-only nodes.
In Browsern, die Unterstützung
String.prototype.trim
wäre dies eine alternative...