content_scripts
| Typ | Array |
|---|---|
| Verpflichtend | Nein |
| Manifest-Version | 2 oder höher |
| Beispiel |
json |
Weist den Browser an, Content-Skripte 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
matchesenthalten, die die URL-Muster angibt, die für das Laden der Skripte abgeglichen werden sollen; - kann Eigenschaften namens
jsundcssenthalten, die Skripte und Stylesheets auflisten, die in übereinstimmende Seiten geladen werden sollen; und - kann eine Reihe anderer Eigenschaften enthalten, die Aspekte steuern, wie und wann Content-Skripte geladen werden.
Diese Tabelle zeigt alle Eigenschaften, die Sie einschließen können.
| Name | Typ | Beschreibung |
|---|---|---|
all_frames
|
Boolean |
Standardmäßig |
css
|
Array |
Ein Array von Pfaden, relativ zu Hinweis: Firefox löst URLs in injizierten CSS-Dateien relativ zur CSS-Datei selbst auf, statt zur Seite, in die sie injiziert wird. |
css_origin
Optional |
String |
Der Stil-Ursprung für die CSS-Injektion:
"author".
Diese Eigenschaft ist in Firefox und Safari nicht auf Groß-/Kleinschreibung empfindlich. |
exclude_globs
|
Array |
Ein Array von Zeichenketten, die Platzhalter enthalten. Siehe Übereinstimmende URL-Muster unten. |
exclude_matches
|
Array |
Ein Array von Übereinstimmungsmustern. Siehe Übereinstimmende URL-Muster unten. |
include_globs
|
Array |
Ein Array von Zeichenketten, die Platzhalter enthalten. Siehe Übereinstimmende URL-Muster unten. |
js
|
Array |
Ein Array von Pfaden, relativ zu |
match_about_blank
|
Boolean |
Fügt die Content-Skripte in Seiten ein, deren URL
Dies ist besonders nützlich, um Skripte in leeren iframes auszuführen, deren URL
Zum Beispiel, nehmen wir an, Sie haben einen json
Wenn der Benutzer
Hinweis:
Beachten Sie, dass in Firefox Content-Skripte nicht in leere iframes bei |
match_origin_as_fallback
|
Boolean |
Wenn true, wird Code in about:, data: und blob:-Seiten injiziert, wenn deren Herkunftsmuster im matches übereinstimmt, selbst wenn der Dokumentursprung undurchsichtig ist (aufgrund der Verwendung von CSP oder iframe-Sandbox). Übereinstimmungsmuster in matches müssen ein Platzhalter-Pfadmuster angeben. Standardmäßig false.
|
matches
|
Array |
Ein Array von Übereinstimmungsmustern. Siehe Übereinstimmende URL-Muster unten. Dies ist der einzige obligatorische 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 |
Lade-Reihenfolge
Registrierte Objekte in content_scripts werden in übereinstimmende Webseiten zur geplanten Zeit durch run_at injiziert (zuerst document_start, dann document_end und schließlich document_idle):
- In der im
content_scripts-Array angegebenen Reihenfolge, für jedes Objekt mit einem passendenrun_at-Wert, dann:- CSS wird in der im
css-Array angegebenen Reihenfolge angewendet. Standardmäßig hat CSS aus dem"author"-Ursprung Vorrang, es sei denn,css_originist auf"user"gesetzt. - JavaScript-Code wird in der Reihenfolge ausgeführt, die im
js-Array angegeben ist.
- CSS wird in der im
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 auf diese Weise geladen, wenn eine mozilla.org-Domain geöffnet wird:
"run-first.js"- weil es eingestellt ist, bei"document_start"ausgeführt zu werden."jquery.js"- da es sich im ersten Array befindet, das mit"document_idle"ausgeführt werden soll."my-content-script.js"- weil es das zweite Element im ersten Array ist, das mit"document_idle"ausgeführt werden soll."my-css.css"- da CSS eines Objekts vor dessen JavaScript geladen wird."another-content-script.js"- weil 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-Übereinstimmungsmuster an: Wenn die URL des Dokuments mit der Spezifikation im Schlüssel übereinstimmt, 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 Übereinstimmungsmustern
exclude_matches-
ein Array von Übereinstimmungsmustern
include_globs-
ein Array von Globs
exclude_globs-
ein Array von Globs
Um eine dieser Eigenschaften zu erfüllen, muss eine URL mit mindestens einem der Einträge im Array übereinstimmen. Beispielsweise, bei einer Eigenschaft wie:
"matches": ["*://*.example.org/*", "*://*.example.com/*"]
Werden sowohl http://example.org/ als auch http://example.com/ übereinstimmen.
Da matches der einzige obligatorische Schlüssel ist, werden die anderen drei Schlüssel verwendet, um die URLs weiter einzuschränken, die übereinstimmen. Damit der Schlüssel insgesamt übereinstimmt, 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 eine Zeichenkette, die Platzhalter enthalten kann.
Es gibt zwei Arten von Platzhaltern, und Sie können sie im gleichen Glob kombinieren:
*entspricht null oder mehr Zeichen?entspricht genau einem Zeichen.
Zum Beispiel: "*na?i" würde mit "illuminati" und "annunaki" übereinstimmen, aber nicht mit "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, unabhängig davon, ob es über HTTP oder HTTPS bereitgestellt wird.
"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, unabhängig davon, ob es über HTTP oder HTTPS bereitgestellt wird.
Die Content-Skripte sehen die gleiche Ansicht des DOM und werden in der Reihenfolge injiziert, in der sie im Array erscheinen, sodass borderify.js auf globale Variablen zugreifen kann, die von jquery.js hinzugefügt wurden.
Spezifikationen
| Specification |
|---|
| Web Extensions # key-content_scripts |