Deus Figendi: Mit JS Wörter im Content verlinken

Beitrag lesen

@bleicher: Es könnte sich auch um eine Wörterbuchfunktion o.ä. handeln.

1. Ich würde das Serverseitig machen, aber dein Posting klingt so, als wolltest du (mit Greasemonkey oder so) auf fremden Seiten das durchführen.

Das größte Problem dürfte imho sein das Wort zu finden, denn dazu musst du wahrscheinlich das gesamte DOM abgrasen, also schön rekursiv jedes verdammte Elemente angucken ob es Kindelemente hat und falls das Kindelement eine TextNode ist dessen Inhalt auf eben die von dir genannten Inhalte durchsuchen.
Wenn es - anders als du schreibst - nicht "jede beliebige" Seite sein muss, sondern du durchaus eingrenzen kannst wo die Worte stehen könnte es schon leichter werden, weil du z.B. über getElementsByTagName arbeiten kannst o.ä.

Nunja, angenommen du hast das Wort gefunden, dann kopierst du dessen _TextNode_ also den Text, den es umschließt ab dem Beginn des Elternelements oder Ende des vorherigen Geschwisterlements bis zum Ende des Elternelements bzw. zum nächsten Geschwisterelement.
Okay, das war kompliziert ausgedrückt. Nehmen wir an du suchst nach foo...
<div><p>blah bar foo blah<img src="./example.img" alt="Beispiel" /> brumm bar</p> fobar</div>
Daraus solltest du die TextNode mit dem Inhalt "blah bar foo blah" greifen.
Den Text kopierst du als String-Objekt heraus, teilst ihn an deinem Stichwort auf (in drei Teile) und erstellst drei TextNodes daraus, den Teil vor dem Stichwort dem Stichwort selbst und dem Teil nach dem Stichwort. Im Beispiel also folgende _TextNodes_:
blah bar
foo
 blah
Dann erstellst du ein neues a-Element mit den Eigenschaften, die es eben haben soll, hängst das mittlere TextNode dort hinein.

Der Rest sollte ja nicht mehr so wild werden, lösche das alte TextNode und häng an der gleichen Stelle:
TextNode: blah bar
das von dir erstellte a-Element
TextNode:  blah
Oder vielleicht umgekehrt (dürfte leichter fallen) hänge die Elemente ERST hinter das Original und lösche es dann.

--
sh:( fo:| ch:? rl:( br:& n4:& ie:{ mo:} va:) de:µ_de:] zu:) fl:( ss:| ls:[ js:(