Wie führe ich eine seitendefinierte JavaScript-Funktion von einer Firefox-Erweiterung aus?

8

Ich erstelle eine Firefox-Erweiterung für Demozwecke. Ich möchte über die Erweiterung eine bestimmte JavaScript-Funktion im Dokument aufrufen. Ich habe dies in meinem HTML-Dokument geschrieben (nicht in der Erweiterung, sondern in einer Seite, die von Firefox geladen wird):

%Vor%

Dann wird die Erweiterung bei einem Ereignis ausgeführt:

%Vor%

Es wird jedoch ein Fehler angezeigt, der besagt, dass funcToBeCalled nicht definiert ist.

Hinweis: Ich könnte ein Element im Dokument erhalten, indem ich document.getElementById(id);

aufruft     
yuku 30.09.2008, 02:32
quelle

4 Antworten

8

Aus Sicherheitsgründen haben Sie eingeschränkten Zugriff auf die Inhaltsseite von der Erweiterung. Siehe XPCNativeWrapper und Sicher Zugreifen auf Inhalts-DOM von Chrome ,

Wenn Sie die Seite steuern, besteht die beste Möglichkeit darin, einen Ereignis-Listener auf der Seite einzurichten und ein Ereignis von Ihrer Erweiterung (addEventListener auf der Seite dispatchEvent in der Erweiterung) zu senden.

Ansonsten finden Sie Ссылка

    
Nickolay 03.10.2008, 18:20
quelle
6
%Vor%

Dies ist nicht sicher und ermöglicht einer bösartigen Seite, ihre Berechtigungen auf die Ihrer Erweiterung zu erhöhen ... Aber sie tut, was Sie gefragt haben. Informieren Sie sich über die frühen Greymonkey-Schwachstellen < Warum ist das eine schlechte Idee?

    
Carlos Rendon 26.03.2010 18:39
quelle
1

Ich habe einen einfacheren Weg es zu tun. Angenommen, Sie müssen die Funktion xyz () aufrufen, die auf der Seite geschrieben ist. und du musst es von deinem PlugIn aus aufrufen.

Erstellen Sie eine Schaltfläche ("machen Sie es unsichtbar. damit es Ihre Seite nicht stört"). Wenn Sie auf diese Schaltfläche klicken, rufen Sie diese Funktion xyz () auf.

%Vor%

jetzt in pluggin haben Sie ein Dokumentobjekt für die Seite. Angenommen, es ist mainDoc

wo Sie xyz () aufrufen möchten, führen Sie einfach diese Zeile

aus %Vor%

ruft die Funktion xyz () auf.

viel Glück:)

    
user307635 24.05.2010 09:53
quelle
0

Sie können es tun, aber Sie müssen die Kontrolle über die Seite haben und in der Lage sein, die Berechtigungsebene für das Skript zu erhöhen. Mozilla-Dokumentation gibt ein Beispiel - suchen Sie auf der Seite nach "Privileg".

    
scottru 30.09.2008 04:44
quelle

Tags und Links