Manifest – Inhaltsskripte

Mit dem Schlüssel "content_scripts" wird eine statisch geladene JavaScript- oder CSS-Datei angegeben, die jedes Mal verwendet wird, wenn eine Seite geöffnet wird, die einem bestimmten URL-Muster entspricht. Erweiterungen können Inhaltsskripts auch programmatisch einfügen. Weitere Informationen finden Sie unter Skripts einfügen.

Manifest

Dies sind die unterstützten Schlüssel für "content_scripts". Nur der Schlüssel "matches" 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. Führende Schrägstriche (/) werden automatisch entfernt. Der Schlüssel "run_at" gibt an, wann die einzelnen Dateien eingefügt werden.

"css" – Array
Optional. Ein Array von CSS-Dateipfaden, die in der Reihenfolge dieses Arrays und vor der DOM-Konstruktion oder dem Seitenrendering eingefügt werden.
"js" – Array,
Optional. Ein Array von JavaScript-Dateipfaden, die in der Reihenfolge eingefügt werden, in der sie in diesem Array angezeigt werden, nachdem CSS-Dateien eingefügt wurden. Jeder String im Array muss ein relativer Pfad zu einer Ressource im Stammverzeichnis der Erweiterung sein. Führende Schrägstriche (/) werden automatisch entfernt.

URLs abgleichen

Nur das Attribut "matches" ist erforderlich. Anschließend können Sie mit "exclude_matches", "include_globs" und "exclude_globs" festlegen, 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 Inhaltsskripts eingefügt werden sollen. Informationen zur Syntax finden Sie unter Übereinstimmungsmuster.
"exclude_matches" – Array
Optional. Schließt die URL-Muster aus, in die die Inhaltsskripts 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 emulieren.
"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 sind URLs, die Platzhalter * und Fragezeichen enthalten. Der Platzhalter * steht für einen beliebigen String beliebiger Länge, einschließlich eines leeren Strings. Das Fragezeichen ? entspricht einem beliebigen einzelnen Zeichen.

Das Inhaltsskript wird in eine Seite eingefügt, wenn:

  • Die URL stimmt mit allen "matches"- und "include_globs"-Mustern überein.
  • Und die URL stimmt nicht mit den Mustern "exclude_matches" oder "exclude_globs" ü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 Inhaltsskript in alle Frames eingefügt werden soll, die den angegebenen Anforderungen an URLs entsprechen. Wenn der Wert auf false gesetzt ist, wird nur in den obersten Frame eingefügt. Es kann zusammen mit "match_about_blank" verwendet werden, um in einen about:blank-Frame einzufügen.

Wenn Sie Code in andere Frames wie data:, blob: und filesystem: einfügen möchten, setzen Sie "match_origin_as_fallback" auf true. Weitere Informationen finden Sie unter In zugehörige Frames einfügen.

"all_frames" Boolesch
Optional. Der Standardwert ist false, d. h., dass nur der oberste Frame abgeglichen wird. Wenn „true“ festgelegt ist, wird das Skript in alle Frames eingefügt, auch wenn der Frame nicht der oberste Frame im Tab ist. Jeder Frame wird unabhängig auf Anforderungen an URLs geprüft. Wenn die Anforderungen an URLs nicht erfüllt sind, wird er nicht in untergeordnete Frames eingefügt.
"match_about_blank" – Boolesch
Optional. Die Standardeinstellung ist false. Gibt an, ob das Script in einen about:blank-Frame eingefügt werden soll, dessen übergeordnete URL mit einem der in "matches" deklarierten Muster übereinstimmt.
"match_origin_as_fallback" – Boolesch
Optional. Die Standardeinstellung ist false. Gibt an, ob das Script in Frames eingefügt werden soll, die von einem übereinstimmenden Ursprung erstellt wurden, deren URL oder Ursprung jedoch möglicherweise nicht direkt mit dem Muster übereinstimmt. Dazu gehören Frames mit unterschiedlichen Schemas, z. B. about:, data:, blob: und filesystem:.

Laufzeit und Ausführungsumgebung

Standardmäßig werden Inhaltsskripts eingefügt, wenn das Dokument und alle Ressourcen vollständig geladen sind. Sie 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 Script 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 vollständig geladen. Das ist die Standardeinstellung.
"world" – ISOLATED | MAIN
Optional. Die JavaScript-Welt, in der ein Script ausgeführt werden soll. Der Standardwert ist "ISOLATED", die Ausführungsumgebung, die für das Inhaltsskript eindeutig ist. Wenn Sie die "MAIN"-Welt auswählen, teilt das Script die Ausführungsumgebung mit dem JavaScript der Hostseite. Weitere Informationen finden Sie unter In isolierten Welten arbeiten.

Beispiel

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