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"]
  }
]

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 einen Schlüssel namens matches enthalten, der die URL-Muster angibt, für die die Skripte geladen werden sollen;
  • kann Schlüssel namens js und css enthalten, die Skripte und Stylesheets auflisten, die in die entsprechenden 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 Schlüssel, die Sie einfügen können.

Name Typ Beschreibung
all_frames Boolean
true

Injiziert die 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, deren Elternteil nur den URL-Anforderungen entspricht und der untergeordnete Frame nicht den URL-Anforderungen entspricht. Die URL-Anforderungen werden für jeden Frame unabhängig geprüft.

Hinweis: Dies gilt auch für jeden Tracker oder jede Anzeige, die iframes verwendet, was bedeutet, dass das Aktivieren dieser Option dazu führen könnte, dass Ihr Content-Skript auf manchen 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 CSS-Dateien referenzieren, die in die entsprechenden Seiten injiziert werden sollen. Informationen zur Reihenfolge, in der die 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 sie injiziert wird.

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

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

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 angegebenen Mustern entspricht im Rest des content_scripts-Schlüssels.

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.

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 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 injiziert werden bei "document_start", 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 deren Ursprung mit dem Muster in matches übereinstimmt, auch wenn der Dokumentenursprung undurchsichtig ist (aufgrund der Verwendung von CSP oder iframe-Sandbox). Übereinstimmungsmuster in matches müssen ein Platzhalter-Pfad-Globbing angeben. Standardmäßig false.
matches Array

Ein Array von Übereinstimmungsmustern. 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 einen von drei Zeichenfolgen hier angeben, jede davon identifiziert einen Zustand im Prozess des Ladens eines Dokuments. Die Zustände entsprechen direkt dem [`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 die Dateien in js nach den 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 mit der Webseite ohne Isolierung geteilt. Skripte in dieser Umgebung haben keinen Zugriff auf die APIs, die nur für Content-Skripte verfügbar sind.

Warnung: Aufgrund des Fehlens der Isolierung 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 modifizieren 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 zur angegebenen Zeit durch run_at injiziert (zuerst document_start, dann document_end und schließlich document_idle):

  • In der Reihenfolge angegeben im content_scripts Array, für jedes Objekt mit einem passenden run_at Wert, dann:
    • CSS wird in der Reihenfolge angewendet, die in seinem css Array angegeben ist.
    • JavaScript-Code wird in der Reihenfolge ausgeführt, die in seinem js Array angegeben ist.

Zum Beispiel, bei 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 so geladen, wenn eine mozilla.org-Domain geöffnet wird:

  • "run-first.js" - weil es gebeten wird, bei "document_start" zu laufen.
  • "jquery.js" - weil es im ersten Array angefordert wird, bei "document_idle" zu laufen.
  • "my-content-script.js" - weil es das zweite Element im ersten Array ist, das angefordert wird, bei "document_idle" zu laufen.
  • "my-css.css" - weil das CSS eines Objekts vor seinem 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 fügt Content-Skripte an Dokumente basierend auf URL-Übereinstimmungen: wenn die URL des Dokuments mit der Angabe im Schlüssel übereinstimmt, dann wird das Skript angefügt. Es gibt vier Eigenschaften innerhalb von "content_scripts", die Sie für diese Angabe 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 entsprechen, muss eine URL mit mindestens einem der Elemente in ihrem Array übereinstimmen. Beispielsweise bei einer 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 weiter einzuschränken, die übereinstimmen. Um der Schlüssel insgesamt zu entsprechen, 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 Zeichenfolge, die Wildcards enthalten kann.

Es gibt zwei Arten von Wildcards, und Sie können sie im selben Glob kombinieren:

  1. * passt auf null oder mehr Zeichen
  2. ? passt genau auf ein Zeichen.

Zum Beispiel: "*na?i" würde "illuminati" und "annunaki" passen, 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, unabhängig davon, ob es über HTTP oder HTTPS bereitgestellt wird.

json
  "content_scripts": [
    {
      "exclude_matches": ["*://newreal1.mobosoft.fun/*"],
      "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 newreal1.mobosoft.fun, unabhängig davon, ob es über HTTP oder HTTPS bereitgestellt wird.

Die Content-Skripte sehen dieselbe Ansicht des 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