content_scripts
Typ | Array |
---|---|
Verpflichtend | Nein |
Manifestversion | 2 oder höher |
Beispiel |
json
|
Anweisungen an den Browser, Content-Skripte in Webseiten zu laden, deren URL einem Muster entspricht.
Dieser Schlüssel ist ein Array. Jedes Element ist ein Objekt, welches:
- muss eine Eigenschaft namens
matches
enthalten, die die zu passenden URL-Muster angibt, für die die Skripte geladen werden sollen; - kann Eigenschaften namens
js
undcss
enthalten, die Skripte und Stylesheets auflisten, die in passende Seiten geladen werden sollen; und - kann eine Reihe anderer Eigenschaften enthalten, die Aspekte steuern, wie und wann Content-Skripte geladen werden.
Diese Tabelle beschreibt alle Eigenschaften, die Sie einschließen können.
Name | Typ | Beschreibung |
---|---|---|
all_frames
|
Boolean |
Standardwert ist |
css
|
Array |
Ein Array von Pfaden, relativ zu Hinweis: Firefox löst URLs in injizierten CSS-Dateien relativ zur CSS-Datei selbst auf, nicht zur Seite, in die es injiziert ist. |
css_origin
Optional |
String |
Der Ursprung der zu injizierenden CSS-Dateien. Dies beeinflusst die Reihenfolge der Kaskadierung (Priorität) der injizierten Stylesheets. Dieser String nimmt folgende Werte an:
|
exclude_globs
|
Array |
Ein Array von Strings, das Platzhalter enthält. Siehe Übereinstimmende URL-Muster unten. |
exclude_matches
|
Array |
Ein Array von Musterübereinstimmungen. Siehe Übereinstimmende URL-Muster unten. |
include_globs
|
Array |
Ein Array von Strings, das Platzhalter enthält. Siehe Übereinstimmende URL-Muster unten. |
js
|
Array |
Ein Array von Pfaden, relativ zu |
match_about_blank
|
Boolean |
Injektion der Content-Skripte in Seiten, deren URL
Dies ist besonders nützlich, um Skripte in leeren Iframes auszuführen, deren URL
Beispiel: Angenommen, Sie haben einen json
Wenn der Nutzer
Hinweis:
Beachten Sie, dass in Firefox Content-Skripte nicht in leere Iframes bei |
match_origin_as_fallback
|
Boolean |
Wenn true , wird Code auf about: , data: und blob: Seiten injiziert, wenn ihr Ursprung dem Muster in matches entspricht, selbst wenn der Dokumentursprung undurchsichtig ist (aufgrund der Verwendung von CSP oder Iframe-Sandbox). Musterübereinstimmungen in matches müssen ein Wildcard-Pfad-Glob angeben. Standardwert ist false .
|
matches
|
Array |
Ein Array von Musterübereinstimmungen. Siehe Übereinstimmende URL-Muster unten. Dies ist der einzige verpflichtende Schlüssel. |
run_at
|
String |
Diese Option bestimmt, wann die in
Der Standardwert ist
In allen Fällen werden Dateien in |
world
|
String |
Die JavaScript-Welt, in der das Skript ausgeführt wird.
Der Standardwert ist |
Ladereihenfolge
Registrierte Objekte in content_scripts
werden in die passenden Webseiten zu dem in run_at
angegebenen Zeitpunkt injiziert (zuerst document_start
, dann document_end
und schließlich document_idle
):
- In der Reihenfolge, die im
content_scripts
-Array angegeben ist, für jedes Objekt mit einem passendenrun_at
-Wert, dann:- CSS wird in der im
css
-Array angegebenen Reihenfolge angewendet. Standardmäßig erhält CSS aus dem"author"
-Ursprung die Priorität, es sei denn,css_origin
ist auf"user"
gesetzt. - JavaScript-Code wird in der im
js
-Array angegebenen Reihenfolge ausgeführt.
- CSS wird in der im
Beispielsweise bei dieser Schlüssel-Spezifikation:
"content_scripts": [
{
"matches": ["*://*.mozilla.org/*"],
"js": ["jquery.js", "my-content-script.js"],
"run_at": "document_idle"
},
{
"matches": ["*://*.mozilla.org/*"],
"css": ["my-css.css"],
"js": ["another-content-script.js", "yet-another-content-script.js"],
"run_at": "document_idle"
},
{
"matches": ["*://*.mozilla.org/*"],
"js": ["run-first.js"],
"run_at": "document_start"
}
]
Werden die Dateien so geladen, wenn eine mozilla.org-Domain geöffnet wird:
"run-first.js"
- da es angefordert wird, bei"document_start"
zu laufen."jquery.js"
- da es im ersten Array bei"document_idle"
angefordert wird."my-content-script.js"
- da es das zweite Element im ersten Array ist, das bei"document_idle"
angefordert wird."my-css.css"
- da das CSS eines Objekts vor dessen JavaScript geladen wird."another-content-script.js"
- da es das erste Element in derjs
-Eigenschaft ist."yet-another-content-script.js"
Übereinstimmende URL-Muster
Der "content_scripts"
-Schlüssel hängt Content-Skripte an Dokumente basierend auf URL-Mustern: Wenn die URL des Dokuments der im Schlüssel angegebenen Spezifikation entspricht, wird das Skript angehängt. Im Inneren von "content_scripts"
gibt es vier Eigenschaften, die Sie für diese Spezifikation verwenden können:
matches
-
ein Array von Musterübereinstimmungen
exclude_matches
-
ein Array von Musterübereinstimmungen
include_globs
-
ein Array von Globs
exclude_globs
-
ein Array von Globs
Um eine dieser Eigenschaften zu erfüllen, muss eine URL mindestens eines der Elemente in ihrem Array übereinstimmen. Beispiel: Gegeben eine Eigenschaft wie:
"matches": ["*://*.example.org/*", "*://*.example.com/*"]
Sowohl http://example.org/
als auch http://example.com/
werden übereinstimmen.
Da matches
der einzige verpflichtende Schlüssel ist, werden die anderen drei Schlüssel verwendet, um die URLs, die übereinstimmen, weiter einzuschränken. Um den Schlüssel als Ganzes zu erfüllen, muss eine URL:
- der
matches
-Eigenschaft entsprechen - UND der
include_globs
-Eigenschaft entsprechen, falls vorhanden - UND NICHT der
exclude_matches
-Eigenschaft entsprechen, falls vorhanden - UND NICHT der
exclude_globs
-Eigenschaft entsprechen, falls vorhanden
Globs
Ein Glob ist einfach ein String, der Platzhalter enthalten kann.
Es gibt zwei Arten von Platzhaltern, und Sie können sie im selben Glob kombinieren:
*
entspricht null oder mehr Zeichen?
entspricht genau einem Zeichen.
Zum Beispiel: "*na?i"
würde "illuminati"
und "annunaki"
entsprechen, aber nicht "sagnarelli"
.
Beispiel
"content_scripts": [
{
"matches": ["*://*.mozilla.org/*"],
"js": ["borderify.js"]
}
]
Dies injiziert ein einzelnes Content-Skript borderify.js
in alle Seiten unter mozilla.org
oder einem seiner Subdomains, ob über HTTP oder HTTPS bereitgestellt.
"content_scripts": [
{
"exclude_matches": ["*://developer.mozilla.org/*"],
"matches": ["*://*.mozilla.org/*"],
"js": ["jquery.js", "borderify.js"]
}
]
Dies injiziert zwei Content-Skripte in alle Seiten unter mozilla.org
oder einem seiner Subdomains, außer developer.mozilla.org
, ob über HTTP oder HTTPS bereitgestellt.
Die Content-Skripte sehen denselben DOM-Ansichtsbereich und werden in der Reihenfolge injiziert, in der sie im Array erscheinen, sodass borderify.js
globale Variablen sehen kann, die von jquery.js
hinzugefügt wurden.
Browser-Kompatibilität
Loading…