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

Weist den Browser an, Content Scripts 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 erfüllt sein müssen, damit die Skripte geladen werden;
  • kann Eigenschaften namens js und css enthalten, die Skripte und Stylesheets auflisten, die in übereinstimmende Seiten geladen werden sollen; und
  • kann eine Reihe weiterer Eigenschaften enthalten, die Aspekte davon steuern, wie und wann Content Scripts geladen werden.

Diese Tabelle führt alle Eigenschaften auf, die Sie einschließen können.

Name Typ Beschreibung
all_frames Boolean
true

Fügt die in js und css angegebenen Skripte in alle Frames ein, die den angegebenen URL-Anforderungen entsprechen, auch wenn der Frame nicht der oberste Frame in einem Tab ist. Dies fügt sie nicht in untergeordnete Frames ein, bei denen nur ihr übergeordneter Frame den URL-Anforderungen entspricht und der untergeordnete Frame den URL-Anforderungen nicht entspricht. Die URL-Anforderungen werden für jeden Frame unabhängig geprüft.

Hinweis: Dies gilt auch für jeden Tracker oder jede Werbung, die iframes verwendet. Das Aktivieren dieser Option kann daher dazu führen, dass Ihr Content Script auf einigen Seiten Dutzende Male aufgerufen wird.

false
Fügt sie nur in Frames ein, die den URL-Anforderungen entsprechen und der oberste Frame in einem Tab sind.

Der Standardwert ist false.

css Array

Ein Array von Pfaden relativ zu manifest.json, die auf CSS-Dateien verweisen, die in übereinstimmende Seiten eingefügt werden sollen. Informationen über die Reihenfolge, in der Dateien eingefügt werden, finden Sie unter Ladereihenfolge.

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

css_origin
Optional
String

Der Stilursprung für die CSS-Injektion:

  • "user", zum Hinzufügen als Benutzer-Stylesheet.
  • "author", zum Hinzufügen als Autoren-Stylesheet.
Der Standardwert ist "author".

Bei dieser Eigenschaft wird in Firefox und Safari die Groß- und Kleinschreibung nicht berücksichtigt.

exclude_globs Array Ein Array von Strings mit Wildcards. Siehe unten Übereinstimmende URL-Muster.
exclude_matches Array Ein Array von Übereinstimmungsmustern. Siehe unten Übereinstimmende URL-Muster.
include_globs Array Ein Array von Strings mit Wildcards. Siehe unten Übereinstimmende URL-Muster.
js Array

Ein Array von Pfaden relativ zu manifest.json, die auf JavaScript-Dateien verweisen, die in übereinstimmende Seiten eingefügt werden sollen. Informationen über die Reihenfolge, in der Dateien eingefügt werden, finden Sie unter Ladereihenfolge.

match_about_blank Boolean

Fügt die Content Scripts 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 im übrigen Schlüssel content_scripts 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.

Nehmen Sie beispielsweise an, Sie haben einen Schlüssel content_scripts 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 Content Scripts in Firefox nicht bei "document_start" in leere iframes eingefügt 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 eingefügt, wenn ihr Ursprung dem Muster in matches entspricht, selbst wenn der Dokumentursprung undurchsichtig ist (aufgrund der Verwendung von CSP oder einer iframe-Sandbox). Übereinstimmungsmuster in matches müssen einen Wildcard-Pfad-Glob angeben. Der Standardwert ist false.
matches Array

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

Dies ist der einzige erforderliche Schlüssel.

run_at String

Diese Option bestimmt, wann die in css und js angegebenen Dateien eingefügt werden. Sie können hier einen von drei Strings angeben, die jeweils einen Zustand im Ladeprozess 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 wurde vollständig geladen, aber Ressourcen wie Skripte und Bilder werden möglicherweise noch geladen.
"document_idle"
Entspricht complete. Das Dokument und alle seine Ressourcen wurden vollständig geladen.

Der Standardwert ist "document_idle".

In allen Fällen werden Dateien in js nach Dateien in css eingefügt.

world String

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

"ISOLATED"
Die Standardausführungsumgebung für Content Scripts. Diese Umgebung ist vom Kontext der Seite isoliert: Obwohl 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 APIs, die nur für Content Scripts verfügbar sind.

Warnung: Aufgrund der fehlenden 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 ändern können, die durch den ausgeführten Code fließen.

Der Standardwert ist "ISOLATED".

Ladereihenfolge

Registrierte Objekte in content_scripts werden zum durch run_at angegebenen Zeitpunkt in übereinstimmende Webseiten eingefügt (zuerst document_start, dann document_end und schließlich document_idle):

  • In der in dem Array content_scripts angegebenen Reihenfolge, für jedes Objekt mit einem übereinstimmenden run_at-Wert, dann:
    • CSS wird in der in seinem Array css angegebenen Reihenfolge angewendet. Standardmäßig erhält CSS vom Ursprung "author" Priorität, sofern css_origin nicht auf "user" gesetzt ist.
    • JavaScript-Code wird in der in seinem Array js angegebenen Reihenfolge ausgeführt.

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

Die Dateien werden beim Öffnen einer mozilla.org-Domain wie folgt geladen:

  • "run-first.js" – weil die Ausführung bei "document_start" angefordert wird.
  • "jquery.js" – weil es sich im ersten Array befindet, das die Ausführung bei "document_idle" anfordert.
  • "my-content-script.js" – weil es das zweite Element im ersten Array ist, das die Ausführung bei "document_idle" anfordert.
  • "my-css.css" – weil das CSS eines Objekts vor seinem JavaScript geladen wird.
  • "another-content-script.js" – weil es das erste Element in der Eigenschaft js ist.
  • "yet-another-content-script.js"

Übereinstimmende URL-Muster

Der Schlüssel "content_scripts" hängt Content Scripts anhand von URL-Übereinstimmungen an Dokumente an: Wenn die URL des Dokuments der Spezifikation im Schlüssel entspricht, wird das Skript angehängt. In "content_scripts" gibt es vier Eigenschaften, 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

Damit eine dieser Eigenschaften übereinstimmt, muss eine URL mindestens einem der Elemente in ihrem Array entsprechen. Bei einer Eigenschaft wie der folgenden:

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

entsprechen sowohl http://example.org/ als auch http://example.com/ dem Muster.

Da matches der einzige erforderliche Schlüssel ist, werden die anderen drei Schlüssel verwendet, um die übereinstimmenden URLs weiter einzuschränken. Damit eine URL dem Schlüssel als Ganzem entspricht, muss sie:

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

globs

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

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

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

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

Beispiel

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

Dies fügt ein einzelnes Content Script borderify.js in alle Seiten unter mozilla.org oder einer seiner Subdomains ein, unabhängig davon, ob sie über HTTP oder HTTPS bereitgestellt werden.

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

Dies fügt zwei Content Scripts in alle Seiten unter mozilla.org oder einer seiner Subdomains ein, mit Ausnahme von developer.mozilla.org, unabhängig davon, ob sie über HTTP oder HTTPS bereitgestellt werden.

Die Content Scripts sehen dieselbe Ansicht des DOM und werden in der Reihenfolge eingefügt, in der sie im Array erscheinen. Daher kann borderify.js globale Variablen sehen, die von jquery.js hinzugefügt wurden.

Spezifikationen

Spezifikation
Web Extensions
# key-content_scripts

Browser-Kompatibilität