Manifest – Inhaltsskripte

Der Schlüssel "content_scripts" gibt eine statisch geladene JavaScript- oder CSS-Datei an, die bei jedem Öffnen einer Seite verwendet werden soll, die einem bestimmten URL-Muster entspricht. Erweiterungen können Inhaltsskripte auch programmatisch einschleusen. Weitere Informationen finden Sie unter Skripte 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",
   }
 ],
 ...
}

Dateien

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 jede Datei eingeschleust wird.

"css" – Array
Optional. Ein Array mit CSS-Dateipfaden, die in der Reihenfolge dieses Arrays eingeschleust werden, bevor die DOM-Erstellung oder das Seiten-Rendering erfolgt.
"js" – Array,
Optional. Ein Array von JavaScript-Dateipfaden, die in der Reihenfolge eingeschleust werden, in der sie in diesem Array erscheinen, nachdem CSS-Dateien eingeschleust 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 können Sie mit "exclude_matches", "include_globs" und "exclude_globs" anpassen, in welche URLs Code eingefügt 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 sollen. Informationen zur Syntax finden Sie unter Übereinstimmungsmuster.
"exclude_matches" – Array
Optional. Schließt die URL-Muster aus, in die die Inhaltsskripte eingefügt 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. Soll das Greasemonkey-Keyword @include emuliert werden.
"exclude_globs" – Array
Optional. Wird nach Übereinstimmungen angewendet, um URLs auszuschließen, die mit diesem glob übereinstimmen. Soll das Greasemonkey-Keyword @exclude emulieren.

Glob-URLs enthalten Platzhalter * und Fragezeichen. Der Platzhalter * entspricht einem String beliebiger Länge, einschließlich leerer Strings, während das Fragezeichen ? entspricht einem einzelnen Zeichen.

Das Content-Skript wird in eine Seite eingefügt, wenn:

  • Seine URL stimmt mit allen "matches"- und "include_globs"-Mustern überein.
  • Und die URL stimmt 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
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
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
https://science.example.com
https://www.example.com/science

Beispiel für 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
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 Content-Skript in alle Frames eingeschleust werden soll, die den angegebenen URL-Anforderungen entsprechen. Wenn false festgelegt ist, wird es nur in den obersten Frame eingefügt. Es kann zusammen mit "match_about_blank" verwendet werden, um es in einen about:blank-Frame einzufügen.

Setzen Sie "match_origin_as_fallback" auf true, um sie in andere Frames wie data:, blob: und filesystem: einzufügen. Weitere Informationen finden Sie unter In zusammengehörigen Frames einfügen.

"all_frames" boolesch
Optional. Die Standardeinstellung ist false. Das bedeutet, dass nur der oberste Frame abgeglichen wird. Ist sie auf „true“ gesetzt, wird der Frame in alle Frames eingefügt, 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 eingefügt, 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, in dem 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 in Frames eingeschleust werden 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 wie about:, data:, blob: und filesystem:.

Laufzeit und Ausführungsumgebung

Inhaltsskripte werden standardmäßig eingeschleust, wenn das Dokument und alle Ressourcen fertig geladen sind und sich in einer privaten, isolierten Ausführungsumgebung befinden, auf die die Seite oder andere Erweiterungen nicht zugreifen können. Sie können diese Standardeinstellungen mit den folgenden Tasten ändern:

"run_at" - document_start | document_end | document_idle
Optional. Gibt an, wann das Skript in die Seite eingeschleust werden soll. Er entspricht den Ladestatus von Document.readyState: <ph type="x-smartling-placeholder">
    </ph>
  • "document_start": Das DOM wird noch geladen.
  • "document_end": Die Ressourcen der Seite werden noch geladen
  • "document_idle": Das DOM und die Ressourcen wurden vollständig geladen. Das ist die Standardeinstellung.
"world" - ISOLATED | MAIN
Optional. Die JavaScript-Welt, in der ein Script ausgeführt werden soll. Die Standardeinstellung ist "ISOLATED", die Ausführungsumgebung des Inhaltsskripts. Wenn Sie "MAIN" auswählen, teilt das Skript die Ausführungsumgebung mit dem JavaScript der Hostseite. Weitere Informationen finden Sie unter Arbeiten in isolierten Welten.

Beispiel

In der Anleitung Auf jeder Seite ausführen erfahren Sie, wie Sie eine Erweiterung erstellen, die ein Inhaltsskript in das Manifest einfügt.