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
Manifest-Version 2 oder höher
Beispiel
json
"content_scripts": [
  {
    "matches": ["*://*.mozilla.org/*"],
    "js": ["borderify.js"]
  }
]

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

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

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

Diese Tabelle zeigt 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 das Frame nicht das oberste Frame in einem Tab ist. Dies injiziert nicht in Kind-Frames, bei denen nur das übergeordnete Element den URL-Anforderungen entspricht und das Kind-Frame nicht den URL-Anforderungen entspricht. Die URL-Anforderungen werden für jedes Frame unabhängig geprüft.

Hinweis: Dies gilt auch für Tracker oder Anzeigen, die iframes verwenden, was bedeutet, dass das Aktivieren dieser Option dazu führen kann, dass Ihr Content-Skript auf einigen Seiten dutzende Male aufgerufen wird.

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

Standardmäßig false.

css Array

Ein Array von Pfaden, relativ zu manifest.json, die CSS-Dateien referenzieren, die in übereinstimmende Seiten injiziert werden sollen. Für Informationen zur Reihenfolge, in der Dateien injiziert werden, siehe einen Lade-Reihenfolge.

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

css_origin
Optional
String

Der Stil-Ursprung für die CSS-Injektion:

  • "user", um es als Nutzer-Stylesheet hinzuzufügen.
  • "author", um es als Autoren-Stylesheet hinzuzufügen.
Standardmäßig "author".

Diese Eigenschaft ist in Firefox und Safari nicht auf Groß-/Kleinschreibung empfindlich.

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

Ein Array von Pfaden, relativ zu manifest.json, die JavaScript-Dateien referenzieren, die in übereinstimmende Seiten injiziert werden sollen. Für Informationen zur Reihenfolge, in der Dateien injiziert werden, siehe eine Lade-Reihenfolge.

match_about_blank Boolean

Fügt die Content-Skripte 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-Schlüsseln 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 Schlüssel all_frames setzen.

Zum Beispiel, nehmen wir an, 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 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 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 in about:, data: und blob:-Seiten injiziert, wenn deren Herkunftsmuster im matches übereinstimmt, selbst wenn der Dokumentursprung undurchsichtig ist (aufgrund der Verwendung von CSP oder iframe-Sandbox). Übereinstimmungsmuster in matches müssen ein Platzhalter-Pfadmuster angeben. Standardmäßig false.
matches Array

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

Dies ist der einzige obligatorische 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 Zeichenketten übergeben, die jeweils einen Zustand im Prozess des Ladens eines Dokuments identifizieren. 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 standardmäßige Umgebung für Content-Skripte. Diese Umgebung ist von der Seitenkontext isoliert: obwohl sie das gleiche Dokument teilen, unterscheiden sich die globalen Geltungsbereiche und verfügbaren APIs.
"MAIN"
Die Ausführungsumgebung der Webseite. Diese Umgebung wird mit der Webseite ohne Isolation geteilt. Skripte in dieser Umgebung haben keinen Zugriff auf die APIs, die nur Content-Skripten zur Verfügung stehen.

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

Der Standardwert ist "ISOLATED".

Lade-Reihenfolge

Registrierte Objekte in content_scripts werden in übereinstimmende Webseiten zur geplanten Zeit durch run_at injiziert (zuerst document_start, dann document_end und schließlich document_idle):

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

Zum Beispiel, in dieser Schlüsselspezifikation:

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 auf diese Weise geladen, wenn eine mozilla.org-Domain geöffnet wird:

  • "run-first.js" - weil es eingestellt ist, bei "document_start" ausgeführt zu werden.
  • "jquery.js" - da es sich im ersten Array befindet, das mit "document_idle" ausgeführt werden soll.
  • "my-content-script.js" - weil es das zweite Element im ersten Array ist, das mit "document_idle" ausgeführt werden soll.
  • "my-css.css" - da CSS eines Objekts vor dessen JavaScript geladen wird.
  • "another-content-script.js" - weil 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-Übereinstimmungsmuster an: Wenn die URL des Dokuments mit der Spezifikation im Schlüssel übereinstimmt, 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 eine dieser Eigenschaften zu erfüllen, muss eine URL mit mindestens einem der Einträge im Array übereinstimmen. Beispielsweise, bei einer Eigenschaft wie:

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

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

Da matches der einzige obligatorische Schlüssel ist, werden die anderen drei Schlüssel verwendet, um die URLs weiter einzuschränken, die übereinstimmen. Damit der Schlüssel insgesamt übereinstimmt, 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 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 mit "illuminati" und "annunaki" übereinstimmen, aber nicht mit "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, 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 Content-Skripte 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 Content-Skripte sehen die gleiche Ansicht des DOM und werden in der Reihenfolge injiziert, in der sie im Array erscheinen, sodass borderify.js auf globale Variablen zugreifen kann, die von jquery.js hinzugefügt wurden.

Spezifikationen

Specification
Web Extensions
# key-content_scripts

Browser-Kompatibilität