contentScripts.register()
Verwenden Sie diese Funktion, um ein oder mehrere Inhaltsskripte zu registrieren.
Sie akzeptiert einen Parameter, der ein Objekt mit ähnlichen Eigenschaften wie die Objekte im content_scripts
-Manifest-Schlüssel ist (aber beachten Sie, dass content_scripts
ein Array von Objekten ist, während das Argument für register()
ein Objekt ist).
Dies ist eine asynchrone Funktion, die ein Promise
zurückgibt.
Syntax
let registering = browser.contentScripts.register(
contentScriptOptions // object
)
Parameter
contentScriptOptions
-
object
. EinRegisteredContentScriptOptions
-Objekt, das die zu registrierenden Inhaltsskripte darstellt. Es hat eine ähnliche Syntax wie die Objekte im Array descontent_scripts
-Manifestschlüssels. Die Unterschiede sind:- Eigenschaftsnamen verwenden camel case, anstatt Unterstriche (snake case) — zum Beispiel
excludeMatches
, nichtexclude_matches
. - Die
js
- undcss
-Eigenschaften ermöglichen es Ihnen, sowohl Zeichenfolgen als auch URLs zu registrieren, daher muss ihre Syntax diese Typen unterscheiden.
Das
RegisteredContentScriptOptions
-Objekt hat die folgenden Eigenschaften:allFrames
Optional-
Entspricht
all_frames
imcontent_scripts
-Schlüssel. -
Ein String oder Array von Strings. Registriert das Inhaltsskript in den Tabs, die zu einer oder mehreren Cookie-Store-IDs gehören. Dies ermöglicht es, Skripte für alle Standard- oder nicht-kontextuellen Identitätstabs, private Browsing-Tabs (wenn die Erweiterung im privaten Modus aktiviert ist), die Tabs einer kontextuellen Identität oder eine Kombination davon zu registrieren. Weitere Informationen finden Sie unter Arbeiten mit kontextuellen Identitäten.
css
Optional-
Ein Array von Objekten. Jedes Objekt hat entweder eine Eigenschaft namens
file
, die eine URL ist, die beim Manifest der Erweiterung beginnt und auf eine zu registrierende CSS-Datei zeigt, oder eine Eigenschaft namenscode
, die einige zu registrierende CSS-Code enthält. excludeGlobs
Optional-
Entspricht
exclude_globs
imcontent_scripts
-Schlüssel. excludeMatches
Optional-
Entspricht
exclude_matches
imcontent_scripts
-Schlüssel. includeGlobs
Optional-
Entspricht
include_globs
imcontent_scripts
-Schlüssel. js
Optional-
Ein Array von Objekten. Jedes Objekt hat entweder eine Eigenschaft namens
file
, die eine URL ist, die beim Manifest der Erweiterung beginnt und auf eine zu registrierende JavaScript-Datei zeigt, oder eine Eigenschaft namenscode
, die einige zu registrierende JavaScript-Code enthält. matchAboutBlank
Optional-
Entspricht
match_about_blank
imcontent_scripts
-Schlüssel. matchOriginAsFallback
Optional-
Entspricht
match_origin_as_fallback
imcontent_scripts
-Schlüssel. matches
-
Entspricht
matches
imcontent_scripts
-Schlüssel. runAt
Optional-
Entspricht
run_at
imcontent_scripts
-Schlüssel. world
Optional-
Die Ausführungsumgebung, in der ein Skript ausgeführt werden soll. Entspricht
world
imcontent_scripts
-Schlüssel.
- Eigenschaftsnamen verwenden camel case, anstatt Unterstriche (snake case) — zum Beispiel
Rückgabewert
Ein Promise
, das mit einem contentScripts.RegisteredContentScript
Objekt erfüllt wird, mit dem Sie die Inhaltsskripte abmelden können.
Derzeit werden Inhaltsskripte abgemeldet, wenn die zugehörige Erweiterungsseite (von der die Inhaltsskripte registriert wurden) entladen wird. Daher sollten Sie ein Inhaltsskript von einer Erweiterungsseite registrieren, die so lange besteht, wie Sie möchten, dass die Inhaltsskripte registriert bleiben.
Browser-Kompatibilität
Beispiele
Dieses Beispiel registriert das defaultCode
Inhaltsskript für alle .org
URLs:
const defaultHosts = "*://*.org/*";
const defaultCode =
"document.body.innerHTML = '<h1>This page has been eaten<h1>'";
async function register(hosts, code) {
return await browser.contentScripts.register({
matches: [hosts],
js: [{ code }],
runAt: "document_idle",
});
}
let registered = register(defaultHosts, defaultCode);
Dieser Code registriert die JS-Datei bei content_scripts/example.js:
const scriptObj = await browser.contentScripts.register({
js: [{ file: "/content_scripts/example.js" }],
matches: ["<all_urls>"],
allFrames: true,
runAt: "document_start",
});