2010-12-21 3 views
0

Ich möchte eine Erweiterung in Firefox erstellen, die auf einer Webseite eingebettete Links von Benutzern extrahiert, die die Maus über den Link bewegen. Dies wäre sehr ähnlich der Linkzielanzeige in der Statusleiste am unteren Rand des Browsers.Firefox Extension Link Extractor

Das Problem, das ich habe, ist Zugriff auf Dokumentobjekt der geladenen Webseite. Ich habe versucht document.getElementsByTag("a") es hat nicht funktioniert. Ich habe versucht content.document.getElementByTag("a") es hat nicht funktioniert.

Idealerweise möchte ich es so verhalten:

  1. Webseite geladen wird.
  2. Alle Anker auf der Webseite haben das Attribut onmouseover.
  3. Benutzer zeigt auf einen Link.
  4. Das Ereignis wird ausgelöst und die URL der Verknüpfung wird extrahiert und in einer Warnmeldung angezeigt.

Antwort

1

ein paar Dinge:

  1. Für ein Skript in einem Browser-Overlay eingefügt ist document das Dokument des Browsers, nicht von einer Webseite, so Sie machen wollen content.document.
  2. Die Funktion ist getElementsByTagName. Verwenden Sie die Fehlerkonsole - es sollte Ihnen sagen, dass getElementsByTag keine Funktion ist.
  3. können Sie auch nur content.document.links
  4. Es könnte einfacher sein, nur einen Ereignis-Listener auf das gesamte Dokument hinzufügen, wenn es geladen wird, und dann in dem Ereignis-Listener, tun nur if (event.target instanceof HTMLAnchorElement) oder etwas zu sehen, ob es ein Link ist.
  5. Wie auch immer Sie es tun, sollten Sie wahrscheinlich die Ereignislistener entfernen, wenn Sie damit fertig sind (z. B. auf dem Ereignis unload der Seite).
+0

u bedeuten document.addEventListener ("click", funtion (e) {if (this.target instanceof HTMLAnchorElement) {alert ("hallo")}}, false); – user375065

+0

Sie haben die richtige Idee, aber Sie haben Punkt 1 verpasst. Und ich denke, das ist das eigentliche Element, das angeklickt wurde, nicht das Ereignis (das ist "e", so wie Sie es in Ihrem Kommentar geschrieben haben. – MatrixFrog

0

Lesen Sie diese tutorial. Vergessen Sie nicht maxVersion in install.rdf (in LinkTargetFinder.xpi)

In linkTargetFinder.js in Funktion run() Sie können sich ändern sehen, wie Links zu finden:

... allLinks = Inhalt .document.getElementsByTagName ("a") ...