Wie führe ich eine Seite definierte JavaScript-Funktion aus einer Firefox-Erweiterung?
Ich bin erstellen einer Firefox-Erweiterung für demo-Zwecke.
Ich zum Aufruf einer bestimmten JavaScript-Funktion in das Dokument aus der Erweiterung.
Ich schrieb dies in mein HTML-Dokument (nicht in der Erweiterung, aber eine Seite, die geladen wird, indem Firefox):
document.funcToBeCalled = function() {
//function body
};
Dann die Erweiterung führt dies auf ein Ereignis:
var document = Application.activeWindow.activeTab.document;
document.funcToBeCalled();
Aber es wirft eine Fehlermeldung, dass funcToBeCalled
ist nicht definiert.
Hinweis: ich konnte die ein element auf das Dokument, durch aufrufen document.getElementById(id);
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist es aus Gründen der Sicherheit, dass Sie nur begrenzten Zugang zu dem Inhalt Seite aus der extension. Sehen XPCNativeWrapper und Sicher auf Inhalte zugreifen, die DOM aus Chrom,
Wenn Sie die Seite, der beste Weg, dies zu tun ist, richten Sie eine Ereignis-listener in die Seite und versenden ein Ereignis aus Ihrer Erweiterung (addEventListener in die Seite, dispatchEvent in der Verlängerung).
Ansonsten, siehe http://groups.google.com/group/mozilla.dev.extensions/msg/bdf1de5fb305d365
Dies ist nicht sicher und ermöglicht eine bösartige Seite erhöhte Berechtigungen, die der Erweiterung... Aber, es nicht zu tun, was Sie gefragt haben. Lesen Sie die bis auf die frühen greasemonkey Schwachstellen, warum dies eine schlechte Idee ist.
Ich habe ein sehr einfacher Weg, es zu tun.
Angenommen, Sie haben zu call xyz () - Funktion, die ist geschrieben auf der Seite. und Sie rufen es aus Ihr das Stopfen.
erstellen Sie eine Schaltfläche ("machen Sie es unsichtbar. so wird es nicht stören Ihre Seite"). auf BeimKlicken dieser Schaltfläche rufen Sie diese xyz () - Funktion.
nun in das Stopfen Sie haben ein Dokument-Objekt für die Seite. nehme an mainDoc
wo Sie wollen call xyz(), einfach diese Zeile ausführen
ruft die xyz () - Funktion.
Glück 🙂
Können Sie es tun, aber Sie brauchen, um die Kontrolle über die Seite und in der Lage sein zu heben die Rechte für das Skript. Mozilla-Dokumentation enthält ein Beispiel - suchen Sie "Privileg", auf der Seite.