Martin58: Mit JS Wörter im Content verlinken

Hallo,

ich steige derzeit in JavaScript ein und habe ein Problem, und zwar möchte ich gerne ein Script schreiben welches auf einer beliebigen Webseite nach bestimmten Wörtern sucht und wenn es diese findet einen bestimmten Link einfügt für das Wort.

Ich habe schon sehr lange gesucht nach einem Ansatz um so etwas zu realisieren, aber leider nichts gefunden. Es wäre total super wenn hier jemand einen kleinen Tipp geben könnte wie es im groben geht.

Vielen Dank schonmal
Martin

  1. Grüße,
    meinst so wie dieser werbemist auf manchen seiten, der manche wörter z uwerbelinks macht?
    MFG
    bleicher

    --
    __________________________-

    FirefoxMyth
  2. @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:(
    1. Hi,

      Das größte Problem dürfte imho sein das Wort zu finden,

      Ja, in der Tat.

      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.

      Ein wirklich gutes Script sollte auch noch berücksichtigen, dass der gesuchte Begriff ggf. über mehrere Textknoten verteilt sein kann.

      MfG ChrisB

      --
      “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]