userScripts
Verwenden Sie diese API, um Benutzerskripte zu registrieren, Drittanbieterskripte, die dazu konzipiert sind, Webseiten zu manipulieren oder neue Funktionen bereitzustellen. Die Registrierung eines Benutzerskripts weist den Browser an, das Skript an Seiten anzufügen, die den während der Registrierung angegebenen URL-Mustern entsprechen.
Hinweis:
Dies ist die Dokumentation für die neue API-Version, verfügbar in Firefox für Manifest V3. Siehe userScripts (legacy)
für Informationen zur API, die in Firefox mit Manifest V2 verwendet werden kann.
Diese API bietet Fähigkeiten ähnlich der scripting
, jedoch mit Merkmalen, die zur Handhabung von Drittanbieterskripten geeignet sind.
Berechtigungen
Um diese API zu verwenden, benötigen Sie die userScripts
-Berechtigung und host_permissions
für die Seiten, auf denen Sie Skripte ausführen möchten. Der Ansatz zur Aktivierung der Nutzung dieser API variiert jedoch zwischen den Browsern:
- In Firefox ist
userScripts
eine ausschließlich optionale Berechtigung, die imoptional_permissions
-Manifest-Schlüssel deklariert wird. Ihre Erweiterung muss prüfen, ob die Berechtigung erteilt wurde, indem sie die Verfügbarkeit desuserScripts
-API-Namensraums überprüft oderpermissions.contains()
verwendet und, falls nicht, um Erlaubnis mitpermissions.request()
bittet. - in Chrome ist
userScripts
eine zur Installationszeit angeforderte Berechtigung, die impermissions
-Manifest-Schlüssel deklariert wird. Um die Nutzung der API zu aktivieren, müssen Benutzer jedoch den Entwickler-Modus in Chrome aktivieren.
Ausführungsumgebungen
Wenn ein Benutzerskript registriert oder aktualisiert wird (mithilfe von userScripts.register()
oder userScripts.update()
), kann Ihre Erweiterung es so einstellen, dass es in einer isolierten USER_SCRIPT
-Umgebung oder der MAIN
-Umgebung ausgeführt wird.
Eine USER_SCRIPT
-Umgebung bietet eine isolierte Ausführungsumgebung, die für eine Host-Seite oder andere Erweiterungen nicht zugänglich ist. Diese Isolation ist ähnlich der einer Inhaltskript-Umgebung, außer dass USER_SCRIPT
-Umgebungen keinen Zugriff auf Erweiterungs-APIs haben.
Benutzerskripte können eine USER_SCRIPT
-Umgebung gemeinsam nutzen oder sich in einer USER_SCRIPT
-Umgebung isolieren, indem sie die worldId
-Eigenschaft von RegisteredUserScript
setzen. Die API ermöglicht einer Erweiterung, eine Content-Security-Policy (CSP) für eine USER_SCRIPT
-Umgebung mit userScripts.configureWorld()
zu konfigurieren.
In der MAIN
-Umgebung können Host-Seiten und andere Erweiterungen laufende Benutzerskripte sehen und darauf zugreifen. Die worldId
-Eigenschaft wird für MAIN
-Umgebungen nicht unterstützt.
Diese Werte der Ausführungsumgebung sind in ExecutionWorld
definiert.
Nachrichtenübermittlung
Wie Inhalts-Skripte und andere Erweiterungsskripte kommunizieren Benutzerskripte mit anderen Teilen einer Erweiterung über Nachrichten mithilfe von runtime.sendMessage()
und runtime.connect()
. Erweiterungen empfangen jedoch Nachrichten mithilfe der dedizierten runtime.onUserScriptMessage
und runtime.onUserScriptConnect
. Dedizierte Handler werden verwendet, da sie es erleichtern, Nachrichten von Benutzerskripten zu identifizieren, die einen weniger vertrauenswürdigen Kontext darstellen.
Um Nachrichtenübermittlungs-APIs zu aktivieren, rufen Sie userScripts.configureWorld()
mit dem Argument messaging
auf true
gesetzt auf, bevor Sie ein Benutzerskript registrieren.
browser.userScripts.configureWorld({
messaging: true,
});
Erweiterungsaktualisierungen
Wenn eine Erweiterung aktualisiert wird, werden Benutzerskripte gelöscht. Um Skripte wiederherzustellen, fügen Sie dem runtime.onInstalled
Ereignishandler der Erweiterung Code hinzu, der auf den Grund "update"
reagiert.
Typen
userScripts.ExecutionWorld
-
Die Ausführungsumgebung für ein Skript, das mit
userScripts.register()
oderuserScripts.update()
injiziert wurde. userScripts.RegisteredUserScript
-
Ein
object
, das vongetScripts()
zurückgegeben wird, welche die registrierten Benutzerskripte darstellt und als Eingabe fürregister()
undupdate()
verwendet wird. userScripts.ScriptSource
-
Der Code oder eine Dateiquelle für ein Benutzerskript.
userScripts.UserScriptFilter
-
Eine Liste von Benutzerskripten, die von
userScripts.getScripts()
oderuserScripts.unregister()
verarbeitet werden sollen. userScripts.WorldProperties
-
Die Konfiguration einer
USER_SCRIPT
-Ausführungsumgebung.
Methoden
userScripts.configureWorld()
-
Konfiguriert eine
USER_SCRIPT
-Ausführungsumgebung für die Erweiterung. userScripts.getScripts()
-
Gibt von der Erweiterung registrierte Benutzerskripte zurück.
userScripts.getWorldConfigurations()
-
Gibt alle von der Erweiterung registrierten Weltkonfigurationen zurück.
userScripts.register()
-
Registriert Benutzerskripte für die Erweiterung.
userScripts.resetWorldConfiguration()
-
Setzt die Konfiguration für eine von der Erweiterung registrierte
USER_SCRIPT
-Welt zurück. userScripts.unregister()
-
Hebt die Registrierung von Benutzerskripten auf, die von der Erweiterung registriert wurden.
userScripts.update()
-
Aktualisiert Benutzerskripte, die von der Erweiterung registriert wurden.
Beispielerweiterungen
Browser-Kompatibilität
BCD tables only load in the browser