Manifest – Inhaltsskripte

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"]
    }
  ],
  ...
}
Übereinstimmungen
https://www.example.com/foo/bar
https://the.example.com/foo/
Stimmt nicht überein mit
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"]
    }
  ],
  ...
}
Übereinstimmungen
https://www.example.com/arts/index.html
https://www.example.com/jobs/index.html
Stimmt nicht überein mit
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"]
    }
  ],
  ...
}
Übereinstimmungen
https://history.example.com
https://.example.com/music
Stimmt nicht überein mit
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"]
    }
  ],
  ...
}
Übereinstimmungen
https://www.example.com/arts/index.html
https://.example.com/jobs/index.html
Stimmt nicht überein mit
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 einen about: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: und filesystem:.

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.