content_scripts
Typ | Array |
---|---|
Verpflichtend | Nein |
Manifest-Version | 2 oder höher |
Beispiel |
json
|
Weist den Browser an, Content Scripts in Webseiten zu laden, deren URL einem Muster entspricht.
Dieser Schlüssel ist ein Array. Jedes Element ist ein Objekt, das:
- muss eine Eigenschaft namens
matches
enthalten, die die URL-Muster spezifiziert, die für das Laden der Skripte übereinstimmen müssen; - kann Eigenschaften namens
js
undcss
enthalten, die Skripte und Stylesheets auflisten, die in übereinstimmende Seiten geladen werden sollen; und - kann eine Reihe anderer Eigenschaften enthalten, die Aspekte kontrollieren, wie und wann Content Scripts geladen werden.
Diese Tabelle beschreibt alle Eigenschaften, die Sie einfügen können.
Name | Typ | Beschreibung |
---|---|---|
all_frames
|
Boolean |
Der Standardwert ist |
css
|
Array |
Ein Array von Pfaden, relativ zu Hinweis: Firefox löst URLs in injizierten CSS-Dateien relativ zur CSS-Datei selbst und nicht zur Seite, in die es injiziert wird, auf. |
css_origin
Optional |
String |
Der Stilursprung für die CSS-Injektion:
"author" .
Diese Eigenschaft ist in Firefox und Safari nicht case sensitive. |
exclude_globs
|
Array |
Ein Array von Zeichenfolgen mit Platzhaltern. Siehe URL-Musterabgleich unten. |
exclude_matches
|
Array |
Ein Array von Musterabgleichen. Siehe URL-Musterabgleich unten. |
include_globs
|
Array |
Ein Array von Zeichenfolgen mit Platzhaltern. Siehe URL-Musterabgleich unten. |
js
|
Array |
Ein Array von Pfaden, relativ zu |
match_about_blank
|
Boolean |
Fügen Sie die Content Scripts in Seiten ein, deren URL
Dies ist besonders nützlich, um Skripte in leere iframes auszuführen, deren URL
Zum Beispiel: Angenommen, Sie haben einen json
Wenn der Benutzer
Hinweis:
Beachten Sie, dass in Firefox Content Scripts nicht in leere iframes bei |
match_origin_as_fallback
|
Boolean |
Wenn true , wird Code in about: , data: und blob: -Seiten injiziert, wenn deren Ursprung mit dem Muster in matches übereinstimmt, sogar wenn der Dokumentenursprung opak ist (durch die Verwendung von CSP oder iframe sandbox). Match-Muster in matches müssen ein Platzhalter-Pfadmuster spezifizieren. Der Standardwert ist false .
|
matches
|
Array |
Ein Array von Musterabgleichen. Siehe URL-Musterabgleich 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 übereinstimmende Webseiten zur durch run_at
angegebenen Zeit 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 übereinstimmendenrun_at
-Wert, dann:- CSS wird in der Reihenfolge angewendet, die in seinem
css
-Array angegeben ist. Standardmäßig erhält CSS aus dem"author"
-Ursprung Priorität, es sei denn,css_origin
ist auf"user"
gesetzt. - JavaScript-Code wird in der Reihenfolge ausgeführt, die in seinem
js
-Array angegeben ist.
- CSS wird in der Reihenfolge angewendet, die in seinem
Zum Beispiel in dieser Schlüsselspezifikation:
"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 wie folgt geladen, wenn eine Domain von mozilla.org geöffnet wird:
"run-first.js"
- weil es angefordert wird, bei"document_start"
auszuführen."jquery.js"
- weil es im ersten Array angefordert wird, bei"document_idle"
auszuführen."my-content-script.js"
- weil es das zweite Element im ersten Array mit der Anforderung ist, bei"document_idle"
auszuführen."my-css.css"
- weil ein Objektmit CSS vor seinem JavaScript geladen wird."another-content-script.js"
- weil es das erste Element in derjs
-Eigenschaft ist."yet-another-content-script.js"
URL-Musterabgleich
Der Schlüssel "content_scripts"
fügt Content Scripts zu Dokumenten basierend auf dem URL-Matching hinzu: Wenn die URL des Dokuments der im Schlüssel angegebenen Spezifikation entspricht, dann wird das Skript angehängt. Es gibt vier Eigenschaften innerhalb von "content_scripts"
, die Sie für diese Spezifikation verwenden können:
matches
-
ein Array von Musterabgleichen
exclude_matches
-
ein Array von Musterabgleichen
include_globs
-
ein Array von Globs
exclude_globs
-
ein Array von Globs
Um mit einer dieser Eigenschaften übereinzustimmen, muss eine URL mindestens eines der Elemente in ihrem Array erfüllen. Zum 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 mit dem Schlüssel als Ganzes übereinzustimmen, muss eine URL:
- mit der
matches
-Eigenschaft übereinstimmen - UND mit der
include_globs
-Eigenschaft übereinstimmen, falls vorhanden - UND NICHT mit der
exclude_matches
-Eigenschaft übereinstimmen, falls vorhanden - UND NICHT mit der
exclude_globs
-Eigenschaft übereinstimmen, falls vorhanden
Globs
Ein Glob ist einfach eine Zeichenfolge, die Platzhalter enthalten kann.
Es gibt zwei Arten von Platzhaltern, und Sie können sie im selben Glob kombinieren:
*
passt auf null oder mehr Zeichen?
passt genau auf ein Zeichen.
Zum Beispiel: "*na?i"
würde auf "illuminati"
und "annunaki"
passen, aber nicht auf "sagnarelli"
.
Beispiel
"content_scripts": [
{
"matches": ["*://*.mozilla.org/*"],
"js": ["borderify.js"]
}
]
Dies injiziert ein einziges Content Script borderify.js
in alle Seiten unter mozilla.org
oder eine ihrer Subdomains, unabhängig davon, 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 Scripts in alle Seiten unter mozilla.org
oder eine ihrer Subdomains außer developer.mozilla.org
, unabhängig davon, ob über HTTP oder HTTPS bereitgestellt.
Die Content Scripts sehen die gleiche Ansicht des DOM 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…