Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

content_scripts

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

Anweisungen an den Browser, Content-Skripte in Webseiten zu laden, deren URL einem Muster entspricht.

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

  • muss eine Eigenschaft namens matches enthalten, die die zu passenden URL-Muster angibt, für die die Skripte geladen werden sollen;
  • kann Eigenschaften namens js und css enthalten, die Skripte und Stylesheets auflisten, die in passende Seiten geladen werden sollen; und
  • kann eine Reihe anderer Eigenschaften enthalten, die Aspekte steuern, wie und wann Content-Skripte geladen werden.

Diese Tabelle beschreibt alle Eigenschaften, die Sie einschließen können.

Name Typ Beschreibung
all_frames Boolean
true

Injektion der in js und css angegebenen Skripte in alle Frames, die den angegebenen URL-Anforderungen entsprechen, auch wenn der Frame nicht der oberste Frame in einem Tab ist. Dies injiziert nicht in untergeordnete Frames, wenn nur deren übergeordneter Frame den URL-Anforderungen entspricht und der untergeordnete Frame nicht den URL-Anforderungen entspricht. Die URL-Anforderungen werden für jedes Frame unabhängig überprüft.

Hinweis: Dies gilt auch für Tracker oder Anzeigen, die Iframes verwenden, was bedeutet, dass bei Aktivierung Ihr Content-Skript möglicherweise auf einigen Seiten dutzende Male aufgerufen wird.

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

Standardwert ist false.

css Array

Ein Array von Pfaden, relativ zu manifest.json, das CSS-Dateien referenziert, die in passende Seiten injiziert werden sollen. Informationen zur Reihenfolge, in der Dateien injiziert werden, finden Sie unter Ladereihenfolge.

Hinweis: Firefox löst URLs in injizierten CSS-Dateien relativ zur CSS-Datei selbst auf, nicht zur Seite, in die es injiziert ist.

css_origin
Optional
String

Der Ursprung der zu injizierenden CSS-Dateien. Dies beeinflusst die Reihenfolge der Kaskadierung (Priorität) der injizierten Stylesheets. Dieser String nimmt folgende Werte an:

  • "user"
  • "author" (Standard)
exclude_globs Array Ein Array von Strings, das Platzhalter enthält. Siehe Übereinstimmende URL-Muster unten.
exclude_matches Array Ein Array von Musterübereinstimmungen. Siehe Übereinstimmende URL-Muster unten.
include_globs Array Ein Array von Strings, das Platzhalter enthält. Siehe Übereinstimmende URL-Muster unten.
js Array

Ein Array von Pfaden, relativ zu manifest.json, das JavaScript-Dateien referenziert, die in passende Seiten injiziert werden sollen. Informationen zur Reihenfolge, in der Dateien injiziert werden, finden Sie unter Ladereihenfolge.

match_about_blank Boolean

Injektion der Content-Skripte in Seiten, deren URL "about:blank" oder "about:srcdoc" ist, wenn die URL der Seite, die diese Seite geöffnet oder erstellt hat, den im Rest des content_scripts-Schlüssels angegebenen Mustern entspricht.

Dies ist besonders nützlich, um Skripte in leeren Iframes auszuführen, deren URL "about:blank" ist. Dazu sollten Sie auch den all_frames-Schlüssel setzen.

Beispiel: Angenommen, Sie haben einen content_scripts-Schlüssel wie diesen:

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

Wenn der Nutzer 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 ab Version 52 in Firefox unterstützt.

Beachten Sie, dass in Firefox Content-Skripte nicht in leere Iframes bei "document_start" injiziert werden, auch wenn Sie diesen Wert in run_at angeben.

match_origin_as_fallback Boolean Wenn true, wird Code auf about:, data: und blob: Seiten injiziert, wenn ihr Ursprung dem Muster in matches entspricht, selbst wenn der Dokumentursprung undurchsichtig ist (aufgrund der Verwendung von CSP oder Iframe-Sandbox). Musterübereinstimmungen in matches müssen ein Wildcard-Pfad-Glob angeben. Standardwert ist false.
matches Array

Ein Array von Musterübereinstimmungen. Siehe Übereinstimmende URL-Muster unten.

Dies ist der einzige verpflichtende Schlüssel.

run_at String

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

"document_start"
Entspricht loading. Der DOM wird noch geladen.
"document_end"
Entspricht interactive. Der DOM ist fertig geladen, aber Ressourcen wie Skripte und Bilder werden möglicherweise noch geladen.
"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 für Content-Skripte. Diese Umgebung ist vom Kontext der Seite isoliert: Während sie dasselbe Dokument teilen, unterscheiden sich die globalen Bereiche und verfügbaren APIs.
"MAIN"
Die Ausführungsumgebung der Webseite. Diese Umgebung wird ohne Isolierung mit der Webseite geteilt. Skripte in dieser Umgebung haben keinen Zugriff auf die APIs, die nur für Content-Skripte verfügbar sind.

Warnung: Aufgrund der fehlenden Isolierung kann die Webseite den ausgeführten Code erkennen und beeinträchtigen. Verwenden Sie die MAIN-Welt nur, wenn es akzeptabel ist, dass Webseiten die Logik oder Daten lesen, auf sie zugreifen oder verändern können, die durch den ausgeführten Code fließen.

Der Standardwert ist "ISOLATED".

Ladereihenfolge

Registrierte Objekte in content_scripts werden in die passenden Webseiten zu dem in run_at angegebenen Zeitpunkt injiziert (zuerst document_start, dann document_end und schließlich document_idle):

  • In der Reihenfolge, die im content_scripts-Array angegeben ist, für jedes Objekt mit einem passenden run_at-Wert, dann:
    • CSS wird in der im css-Array angegebenen Reihenfolge angewendet. Standardmäßig erhält CSS aus dem "author"-Ursprung die Priorität, es sei denn, css_origin ist auf "user" gesetzt.
    • JavaScript-Code wird in der im js-Array angegebenen Reihenfolge ausgeführt.

Beispielsweise bei dieser Schlüssel-Spezifikation:

json
"content_scripts": [
    {
    "matches": ["*://*.mozilla.org/*"],
    "js": ["jquery.js", "my-content-script.js"],
    "run_at": "document_idle"
  },
  {
    "matches": ["*://*.mozilla.org/*"],
    "css": ["my-css.css"],
    "js": ["another-content-script.js", "yet-another-content-script.js"],
    "run_at": "document_idle"
  },
  {
    "matches": ["*://*.mozilla.org/*"],
    "js": ["run-first.js"],
    "run_at": "document_start"
  }
]

Werden die Dateien so geladen, wenn eine mozilla.org-Domain geöffnet wird:

  • "run-first.js" - da es angefordert wird, bei "document_start" zu laufen.
  • "jquery.js" - da es im ersten Array bei "document_idle" angefordert wird.
  • "my-content-script.js" - da es das zweite Element im ersten Array ist, das bei "document_idle" angefordert wird.
  • "my-css.css" - da das CSS eines Objekts vor dessen JavaScript geladen wird.
  • "another-content-script.js" - da es das erste Element in der js-Eigenschaft ist.
  • "yet-another-content-script.js"

Übereinstimmende URL-Muster

Der "content_scripts"-Schlüssel hängt Content-Skripte an Dokumente basierend auf URL-Mustern: Wenn die URL des Dokuments der im Schlüssel angegebenen Spezifikation entspricht, wird das Skript angehängt. Im Inneren von "content_scripts" gibt es vier Eigenschaften, die Sie für diese Spezifikation verwenden können:

matches

ein Array von Musterübereinstimmungen

exclude_matches

ein Array von Musterübereinstimmungen

include_globs

ein Array von Globs

exclude_globs

ein Array von Globs

Um eine dieser Eigenschaften zu erfüllen, muss eine URL mindestens eines der Elemente in ihrem Array übereinstimmen. 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 verpflichtende Schlüssel ist, werden die anderen drei Schlüssel verwendet, um die URLs, die übereinstimmen, weiter einzuschränken. Um den Schlüssel als Ganzes zu erfüllen, muss eine URL:

  • der matches-Eigenschaft entsprechen
  • UND der include_globs-Eigenschaft entsprechen, falls vorhanden
  • UND NICHT der exclude_matches-Eigenschaft entsprechen, falls vorhanden
  • UND NICHT der exclude_globs-Eigenschaft entsprechen, falls vorhanden

Globs

Ein Glob ist einfach ein String, der Platzhalter enthalten kann.

Es gibt zwei Arten von Platzhaltern, und Sie können sie im selben 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 Content-Skript borderify.js in alle Seiten unter mozilla.org oder einem seiner Subdomains, ob über HTTP oder HTTPS bereitgestellt.

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

Dies injiziert zwei Content-Skripte in alle Seiten unter mozilla.org oder einem seiner Subdomains, außer developer.mozilla.org, ob über HTTP oder HTTPS bereitgestellt.

Die Content-Skripte sehen denselben DOM-Ansichtsbereich 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