Der Schlüssel "content_scripts"
gibt eine statisch geladene JavaScript- oder CSS-Datei an, die jedes Mal verwendet wird, wenn eine Seite geöffnet wird, die einem bestimmten URL-Muster entspricht. Erweiterungen können Inhaltsskripte auch programmatisch einschleusen. Weitere Informationen finden Sie unter Skripts einfügen.
Manifest
Dies sind die unterstützten Schlüssel für "content_scripts"
. Nur der "matches"
-Schlüssel und entweder "js"
oder "css"
sind erforderlich.
manifest.json
{
"name": "My extension",
...
"content_scripts": [
{
"matches": ["https://*.example.com/*"],
"css": ["my-styles.css"],
"js": ["content-script.js"],
"exclude_matches": ["*://*/*foo*"],
"include_globs": ["*example.com/???s/*"],
"exclude_globs": ["*bar*"],
"all_frames": false,
"match_origin_as_fallback": false,
"match_about_blank": false,
"run_at": "document_idle",
"world": "ISOLATED",
}
],
...
}
Files
Jede Datei muss einen relativen Pfad zu einer Ressource im Stammverzeichnis der Erweiterung enthalten. Vorangestellte Schrägstriche (/
) werden automatisch abgeschnitten. Der Schlüssel "run_at"
gibt an, wann die einzelnen Dateien eingeschleust werden.
"css"
– Array- Optional. Ein Array von CSS-Dateipfaden, eingeschleust in der Reihenfolge dieses Arrays und vor der DOM-Erstellung oder dem Seiten-Rendering.
"js"
– Array,- Optional. Ein Array von JavaScript-Dateipfaden, eingeschleust in der Reihenfolge, in der sie in diesem Array erscheinen, nachdem CSS-Dateien eingefügt wurden. Jeder String im Array muss ein relativer Pfad zu einer Ressource im Stammverzeichnis der Erweiterung sein. Vorangestellte Schrägstriche („/“) werden automatisch abgeschnitten.
URLs abgleichen
Nur die Property "matches"
ist erforderlich. Anschließend kannst du mit "exclude_matches"
, "include_globs"
und "exclude_globs"
anpassen, in welche URLs Code eingeschleust werden soll. Der Schlüssel "matches"
löst eine Warnung aus.
"matches"
– Array- Erforderlich. Gibt an, in welche URL-Muster die Inhaltsskripte eingefügt werden. Informationen zur Syntax finden Sie unter Übereinstimmungsmuster.
"exclude_matches"
– Array- Optional. Schließt die URL-Muster aus, in die die Inhaltsskripte eingeschleust werden sollen. Informationen zur Syntax finden Sie unter Übereinstimmungsmuster.
"include_globs"
– Array- Optional. Wird nach Übereinstimmungen angewendet, um nur die URLs einzuschließen, die auch mit diesem Glob übereinstimmen. Ist dafür vorgesehen, das Greasemonkey-Keyword @include zu emulieren.
"exclude_globs"
– Array- Optional. Wird nach Übereinstimmungen angewendet, um URLs auszuschließen, die diesem Glob entsprechen. Ist dafür vorgesehen, das Greasemonkey-Keyword @exclusion zu emulieren.
Glob-URLs sind URLs, die Platzhalter * und Fragezeichen enthalten. Der Platzhalter * entspricht beliebigen Strings beliebiger Länge, einschließlich eines leeren Strings, während das Fragezeichen ? entspricht einem einzelnen Zeichen.
Das Inhaltsskript wird in folgenden Fällen in eine Seite eingeschleust:
- Seine URL stimmt mit allen
"matches"
- und"include_globs"
-Mustern überein. - Außerdem stimmt die URL nicht mit
"exclude_matches"
- oder"exclude_globs"
-Mustern überein.
Beispiele für Globs und URL-Übereinstimmungen
"include_globs"
manifest.json
{
...
"content_scripts": [
{
"matches": ["https://*.example.com/*"],
"include_globs": ["https://???.example.com/foo/*"],
"js": ["content-script.js"]
}
],
...
}
https://www.example.com/foo/bar https://the.example.com/foo/
https://my.example.com/foo/bar https://example.com/foo/* https://www.example.com/foo
manifest.json
{
...
"content_scripts": [
{
"matches": ["https://*.example.com/*"],
"include_globs": ["*example.com/???s/*"],
"js": ["content-script.js"]
}
],
...
}
https://www.example.com/arts/index.html https://www.example.com/jobs/index.html
https://www.example.com/sports/index.html https://www.example.com/music/index.html
"exclude_globs"
manifest.json
{
...
"content_scripts": [
{
"matches": ["https://*.example.com/*"],
"exclude_globs": ["*science*"],
"js": ["content-script.js"]
}
],
...
}
https://history.example.com https://.example.com/music
https://science.example.com https://www.example.com/science
Beispiel für eine erweiterte Anpassung
manifest.json
{
...
"content_scripts": [
{
"matches": ["https://*.example.com/*"],
"exclude_matches": ["*://*/*business*"],
"include_globs": ["*example.com/???s/*"],
"exclude_globs": ["*science*"],
"js": ["content-script.js"]
}
],
...
}
https://www.example.com/arts/index.html https://.example.com/jobs/index.html
https://science.example.com https://www.example.com/jobs/business https://www.example.com/science
Frames
Der Schlüssel "all_frames"
gibt an, ob das Inhaltsskript in alle Frames eingeschleust werden soll, die den angegebenen URL-Anforderungen entsprechen. Wenn false
festgelegt ist, wird der Inhalt nur im obersten Frame eingefügt. Es kann zusammen mit "match_about_blank"
verwendet werden, um Injektionen in einen about:blank
-Frame durchzuführen.
Für die Injektion in andere Frames wie data:
, blob:
und filesystem:
setzen Sie "match_origin_as_fallback"
auf true
. Weitere Informationen finden Sie unter In zugehörige Frames einfügen.
"all_frames"
Boolescher Wert- Optional. Die Standardeinstellung ist
false
. Das bedeutet, dass nur der oberste Frame zugeordnet wird. Wenn die Richtlinie auf „true“ gesetzt ist, wird sie in alle Frames eingeschleust, auch wenn der Frame nicht der oberste Frame auf dem Tab ist. Jeder Frame wird unabhängig auf URL-Anforderungen geprüft. Er wird nicht in untergeordnete Frames eingeschleust, wenn die URL-Anforderungen nicht erfüllt sind. "match_about_blank"
– Boolesch- Optional. Die Standardeinstellung ist
false
. Gibt an, ob das Skript in einenabout:blank
-Frame eingeschleust werden soll, wenn die übergeordnete URL mit einem der in"matches"
deklarierten Muster übereinstimmt. "match_origin_as_fallback"
– Boolesch- Optional. Die Standardeinstellung ist
false
. Gibt an, ob das Skript Frames injizieren soll, die von einem übereinstimmenden Ursprung erstellt wurden, aber deren URL oder Ursprung möglicherweise nicht direkt mit dem Muster übereinstimmt. Dazu gehören Frames mit unterschiedlichen Schemas, z. B.about:
,data:
,blob:
undfilesystem:
.
Ausführungszeit und Ausführungsumgebung
Inhaltsscripts werden standardmäßig eingeschleust, wenn das Dokument und alle Ressourcen fertig geladen sind, und befinden sich in einer privaten, isolierten Ausführungsumgebung, auf die die Seite oder andere Erweiterungen nicht zugreifen können. Sie können diese Standardeinstellungen in den folgenden Schlüsseln ändern:
"run_at"
-document_start
|document_end
|document_idle
- Optional. Gibt an, wann das Skript in die Seite eingefügt werden soll. Sie entspricht den Ladestatus von Document.readyState:
"document_start"
: Das DOM wird noch geladen."document_end"
: Die Ressourcen der Seite werden noch geladen"document_idle"
: Das DOM und die Ressourcen wurden geladen. Das ist die Standardeinstellung.
"world"
–ISOLATED
|MAIN
- Optional. Die JavaScript-Welt, in der ein Skript ausgeführt werden kann. Die Standardeinstellung ist
"ISOLATED"
. Dies ist die Ausführungsumgebung, die für das Inhaltsskript eindeutig ist. Bei Auswahl der"MAIN"
-Welt teilt das Skript die Ausführungsumgebung mit dem JavaScript der Hostseite. Weitere Informationen finden Sie unter In isolierten Welten arbeiten.
Beispiel
Sehen Sie sich die Anleitung Auf jeder Seite ausführen an, um eine Erweiterung zu erstellen, die ein Inhaltsskript in das Manifest einfügt.