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);
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 Ссылка
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?
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:)
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".
Tags und Links javascript dom document firefox