jQuery-Plugin applyOnTextNodes

Wer kennt das nicht, da hat man eine tolle Applikations ins Netz gestellt und bekommt einen Änderungswunsch vom Kunden, der besagt, dass bestimmte Texte z.B. zensiert werden sollen, die Suchmaschine soll diesen Ausdruck jedoch unzensiert sehen können. Also bleibt einem die Lösung auf der Seite des Client den Text zu ersetzen (ist allerdings nicht zu empfehlen, da hier die Performance doch sehr beeinträchtigt werden würde). Oder stellt euch vor, dass ihr einen Template-InlineScript-Textblock erstellt habt und diesen manipulieren sollt, doch wie kann man eigentlich dort drauf zugreifen? Via CSS-Selektor kommt man einfach nicht richtig an den Code, doch zum Glück kann man hier einfach direkt auf Textknoten zugreifen.

Damit man alles in gewohnter Callback-Manier umsetzen kann, habe ich dieses Plugin erstellt, mit dem man einfach einen Callback auf einen Selektor loslässt und dieser arbeitet alle gefundenen Text-Bereiche via übergebenen Callback rekursiv ab. Sollte man viel mit Inline-Skripten arbeiten, lässt sich das scannen dieser Skripte überspringen.

Beispiele gefällig?

<section>
    <header>
        Ersetze alle gefundenen Textknoten durch leere Zeichenketten
    </header>
    <pre><code>$.applyOnTextNodes( ".specialClasses", function( $node ){ $node.replaceWith("") } );</code></pre>
</section>
<section>
    <header>
        Post-load Anonymisierung
    </header>
    <pre><code>$(function(){ $("#myAwesomeSelector").applyOnTextNodes( function( $node ){ $node.replaceWith("XXX") } ); });</code></pre>
</section>
<section>
    <header>
        Jeder Knoten ist zur vereinfachten Handhabung mit jQuery gewrapped
    </header>
    <pre><code>$("#specialSuperCoolSelector").applyOnTextNodes( function( $node ){ var rawTextnode = $node.get(0) } );</code></pre>
</section>

Plugin herunterladen

Bisher lohnt es sich noch nicht dieses Plugin auf Github einzustellen, daher gibt es das Skript hier von meiner Website.

Teile diese Seite

work in progress