content_scripts

Typ Array
Pflichtfeld Nein
Manifest-Version 2 oder höher
Beispiel
json
"content_scripts": [
  {
    "matches": ["*://*.mozilla.org/*"],
    "js": ["borderify.js"]
  }
]

Weist den Browser an, Inhaltsskripte in Webseiten zu laden, deren URL einem bestimmten Muster entspricht.

Dieser Schlüssel ist ein Array. Jedes Element ist ein Objekt, das:

  • muss einen Schlüssel namens matches enthalten, der die URL-Muster angibt, die übereinstimmen müssen, damit die Skripte geladen werden;
  • kann Schlüssel namens js und css enthalten, die Skripte und/oder Stylesheets auflisten, die in übereinstimmende Seiten geladen werden sollen; und
  • kann eine Reihe anderer Eigenschaften enthalten, die feinere Aspekte der Art und des Zeitpunkts der Ladung von Inhaltsskripten steuern.

Details zu allen Schlüsseln, die Sie einfügen können, sind in der folgenden Tabelle angegeben.

Name Typ Beschreibung
all_frames Boolean
true

Injiziert die in js und css angegebenen Skripte in alle Frames, die den angegebenen URL-Anforderungen entsprechen, selbst wenn der Frame nicht der oberste Frame in einem Tab ist. Dies injiziert nicht in untergeordnete Frames, bei denen nur der übergeordnete Frame den URL-Anforderungen entspricht und der untergeordnete Frame dies nicht tut. Die URL-Anforderungen werden für jeden Frame unabhängig überprüft.

Hinweis: Dies gilt auch für jegliche Tracker oder Werbeanzeigen, die iframes verwenden, was bedeutet, dass das Aktivieren dieser Option dazu führen kann, dass Ihr Inhaltsskript auf einigen Seiten Dutzende Male aufgerufen wird.

false
Injiziert nur in Frames, die den URL-Anforderungen entsprechen und der oberste Frame in einem Tab sind.

Standardmäßig false.

css Array

Ein Array von Pfaden, relativ zu manifest.json, die auf CSS-Dateien verweisen, die in übereinstimmende Seiten injiziert werden.

Dateien werden in der angegebenen Reihenfolge injiziert und zu dem durch run_at angegebenen Zeitpunkt.

Hinweis: Firefox löst URLs in injizierten CSS-Dateien relativ zur CSS-Datei selbst und nicht zu der Seite, in die sie injiziert wird, auf.

exclude_globs Array Ein Array von Zeichenfolgen, 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 Zeichenfolgen, die Platzhalter enthalten. Siehe Übereinstimmende URL-Muster unten.
js Array

Ein Array von Pfaden, relativ zu manifest.json, die auf JavaScript-Dateien verweisen, die in übereinstimmende Seiten injiziert werden.

Dateien werden in der angegebenen Reihenfolge injiziert. Das bedeutet zum Beispiel, dass, wenn Sie jQuery hier einschließen, gefolgt von einem anderen Inhaltsskript, wie folgt:

json
"js": ["jquery.js", "my-content-script.js"]

Dann kann "my-content-script.js" jQuery verwenden.

Die Dateien werden nach allen Dateien in css und zu dem durch run_at angegebenen Zeitpunkt injiziert.

match_about_blank Boolean

Fügt die Inhaltsskripte in Seiten ein, deren URL "about:blank" oder "about:srcdoc" ist, wenn die URL der Seite, die diese Seite geöffnet oder erstellt hat, den in den restlichen content_scripts angegebenen Mustern entspricht.

Dies ist besonders nützlich, um Skripte in leeren iframes auszuführen, deren URL "about:blank" ist. Um dies zu tun, sollten Sie auch den Schlüssel all_frames setzen.

Zum Beispiel, nehmen wir an, Sie haben einen content_scripts Schlüssel wie folgt:

json
  "content_scripts": [
    {
      "js": ["my-script.js"],
      "matches": ["https://example.org/"],
      "match_about_blank": true,
      "all_frames": true
    }
  ]

Wenn der Benutzer https://example.org/ lädt und diese Seite ein leeres iframe einbettet, wird "my-script.js" in das iframe geladen.

Hinweis: match_about_blank wird in Firefox ab Version 52 unterstützt.

Beachten Sie, dass in Firefox Inhaltsskripte nicht in leere iframes bei "document_start" injiziert werden, selbst wenn Sie diesen Wert in run_at angeben.

match_origin_as_fallback Boolean Wenn true, wird Code in about:, data:, und blob: Seiten injiziert, wenn ihr Ursprung dem Muster in matches entspricht, selbst wenn der Dokumentenursprung undurchsichtig ist (aufgrund der Verwendung von CSP oder iframe-Sandbox). Übereinstimmungsmuster in matches müssen ein Platzhalterpfadmuster spezifizieren. Standardmäßig false.
matches Array

Ein Array von Übereinstimmungsmustern. Siehe Übereinstimmende URL-Muster unten.

Dies ist der einzige Pflichtschlüssel.

run_at String

Diese Option bestimmt, wann die in css und js angegebenen Dateien injiziert werden. Sie können hier einen von drei Zeichenfolgen angeben, die jeweils einen Zustand im Prozess des Ladens eines Dokuments kennzeichnen. Die Zustände entsprechen direkt [`Document.readyState`](/de/docs/Web/API/Document/readyState):

"document_start"
Entspricht loading. Das DOM wird noch geladen.
"document_end"
Entspricht interactive. Das DOM ist fertig geladen, aber Ressourcen wie Skripte und Bilder können noch geladen werden.
"document_idle"
Entspricht complete. Das Dokument und alle seine Ressourcen sind fertig geladen.

Der Standardwert ist "document_idle".

In allen Fällen werden Dateien in js nach Dateien in css injiziert.

world String

Die JavaScript-Welt, in der das Skript ausgeführt wird.

"ISOLATED"
Die Standardausführungsumgebung von Inhaltsskripten. Diese Umgebung ist von dem Kontext der Seite isoliert: Obwohl sie das gleiche Dokument teilen, unterscheiden sich die globalen Bereiche und verfügbaren APIs.
"MAIN"
Die Ausführungsumgebung der Webseite. Diese Umgebung wird mit der Webseite ohne Isolierung geteilt. Skripte in dieser Umgebung haben keinen Zugriff auf die APIs, die nur für Inhaltsskripte verfügbar sind.

Warnung: Aufgrund des fehlenden Schutzes kann die Webseite den ausgeführten Code erkennen und beeinflussen. Verwenden Sie die MAIN-Welt nicht, es sei denn, es ist akzeptabel, dass Webseiten die Logik oder Daten, die durch den ausgeführten Code fließen, lesen, darauf zugreifen oder sie ändern können.

Der Standardwert ist "ISOLATED".

Übereinstimmende URL-Muster

Der "content_scripts"-Schlüssel hängt Inhaltsskripte an Dokumente basierend auf URL-Übereinstimmungen an: wenn die URL des Dokuments der Angabe im Schlüssel entspricht, 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 mit einer dieser Eigenschaften übereinzustimmen, muss eine URL mit mindestens einem der Elemente in ihrem Array übereinstimmen. Zum Beispiel, gegeben eine Eigenschaft wie:

json
"matches": ["*://*.example.org/*", "*://*.example.com/*"]

sowohl http://example.org/ als auch http://example.com/ werden übereinstimmen.

Da matches der einzige Pflichtschlüssel ist, werden die anderen drei Schlüssel verwendet, um die URLs, die übereinstimmen, weiter einzuschränken. Um insgesamt mit dem Schlüssel übereinzustimmen, muss eine URL:

  • mit der matches-Eigenschaft übereinstimmen
  • UND mit der include_globs-Eigenschaft übereinstimmen, falls vorhanden
  • UND NICHT mit der exclude_matches-Eigenschaft übereinstimmen, falls vorhanden
  • UND NICHT mit der exclude_globs-Eigenschaft übereinstimmen, 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:

  1. * entspricht null oder mehr Zeichen
  2. ? entspricht genau einem Zeichen.

Zum Beispiel: "*na?i" würde "illuminati" und "annunaki" entsprechen, aber nicht "sagnarelli".

Beispiel

json
"content_scripts": [
  {
    "matches": ["*://*.mozilla.org/*"],
    "js": ["borderify.js"]
  }
]

Dies injiziert ein einzelnes Inhaltsskript borderify.js in alle Seiten unter mozilla.org oder einem seiner Subdomains, unabhängig davon, ob es über HTTP oder HTTPS bereitgestellt wird.

json
  "content_scripts": [
    {
      "exclude_matches": ["*://developer.mozilla.org/*"],
      "matches": ["*://*.mozilla.org/*"],
      "js": ["jquery.js", "borderify.js"]
    }
  ]

Dies injiziert zwei Inhaltsskripte 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 Inhaltsskripte sehen denselben Blick auf das DOM und werden in der Reihenfolge injiziert, in der sie im Array erscheinen, sodass borderify.js globale Variablen sehen kann, die von jquery.js hinzugefügt wurden.

Browser-Kompatibilität

BCD tables only load in the browser