userScripts.onBeforeScript
Das onBeforeScript
-Ereignis der browser.userScripts
wird ausgelöst, bevor ein User Script ausgeführt wird. Es kann nur im API-Skript enthalten sein, dem Script, das unter "user_scripts"
registriert ist, wo es verwendet wird, um zu erkennen, dass die benutzerdefinierten API-Methoden zum User Script exportiert werden sollen.
Syntax
browser.userScripts.onBeforeScript.addListener(listener)
browser.userScripts.onBeforeScript.removeListener(listener)
browser.userScripts.onBeforeScript.hasListener(listener)
Ereignisse haben drei Funktionen:
addListener(listener)
-
Fügt einen Listener zu diesem Ereignis hinzu.
removeListener(listener)
-
Stoppt das Lauschen auf dieses Ereignis. Das Argument
listener
ist der Listener, der entfernt werden soll. hasListener(listener)
-
Überprüft, ob
listener
für dieses Ereignis registriert ist. Gibttrue
zurück, wenn er hört, andernfallsfalse
.
addListener-Syntax
Parameter
listener
-
Die Funktion, die aufgerufen wird, wenn dieses Ereignis eintritt. Die Funktion erhält folgende Argumente:
script
-
Ein
object
, das das User Script darstellt, das mit einer Webseite übereinstimmt. Seine Eigenschaften und Methoden sind wie folgt:defineGlobals
-
Eine Methode, die ein Objekt exportiert, das Eigenschaften und Methoden enthält, die global für den User Script Sandbox verfügbar sind. Diese Methode muss synchron aufgerufen werden, um zu gewährleisten, dass das User Script noch nicht ausgeführt wurde.
export
-
Eine Methode, die einen Wert in einen umwandelt, auf den der User Script-Code zugreifen kann. Diese Methode wird in API-Methoden verwendet, die an das User Script exportiert werden, um nicht-primäre Werte abzurufen oder aufzulösen. Die exportierten Objekte können auch Methoden bereitstellen, auf die der User Script-Code zugreifen und die er aufrufen kann.
global
-
Ein
object
, das Zugriff auf die Sandbox für das User Script bietet. metadata
-
Die Eigenschaft
scriptMetadata
, die festgelegt wurde, als das User Script mituserScripts.register
registriert wurde.
Beispiele
Ein Beispiel, wie der Listener verwendet werden könnte:
browser.userScripts.onBeforeScript.addListener((script) => {
script; // This is an API object that represents the user script
// that is going to be executed.
script.metadata; // Access the user script metadata (returns the
// value of the scriptMetadata property from
// the call to userScripts.register).
// Export some global properties into the user script sandbox
// (this method has to be called synchronously from the
// listener, otherwise the user script may have executed).
script.defineGlobals({
aGlobalPropertyAccessibleFromUserScriptCode: "prop value",
myCustomAPIMethod(param1, param2) {
// Custom methods exported from the API script can use
// the WebExtensions APIs available to content scripts.
browser.runtime.sendMessage(/* … */);
// …
return 123; // primitive values can be returned directly
// …
// Non primitive values have to be exported explicitly
// using the export method provided by the script API
// object
return script.export({
objKey1: {
nestedProp: "nestedValue",
},
// Explicitly exported objects can also provide methods.
objMethod() {
/* … */
},
});
},
async myAsyncMethod(param1, param2, param3) {
// exported methods can also be declared as async
},
});
});
Browser-Kompatibilität
BCD tables only load in the browser