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 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 mit dem Namen matches enthalten, die die URL-Muster spezifiziert, die für das Laden der Skripte übereinstimmen müssen;
  • kann Eigenschaften mit den Namen js und css enthalten, die Skripte und Stylesheets listen, die in übereinstimmende Seiten geladen werden sollen; und
  • kann eine Anzahl anderer Eigenschaften enthalten, die Aspekte steuern, wie und wann Content Scripts geladen werden.

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

Name Typ Beschreibung
all_frames Boolean
true

Integrieren Sie die in js und css angegebenen Skripte in alle Frames, die die angegebenen URL-Anforderungen erfüllen, auch wenn der Frame nicht der oberste Frame in einem Tab ist. Dies wird nicht in Child-Frames integriert, bei denen nur der Parent die URL-Anforderungen erfüllt und der Child-Frame die URL-Anforderungen nicht erfüllt. Die URL-Anforderungen werden für jeden Frame unabhängig überprüft.

Hinweis: Dies gilt auch für Tracker oder Anzeigen, die iframes verwenden, was bedeutet, dass die Aktivierung dazu führen könnte, dass Ihr Content Script auf einigen Seiten dutzende Male aufgerufen wird.

false
Integrieren Sie nur in Frames, die die URL-Anforderungen erfüllen und der oberste Frame in einem Tab sind.

Standardmäßig ist false.

css Array

Ein Array von Pfaden, relativ zu manifest.json, die CSS-Dateien referenzieren, die in übereinstimmende Seiten integriert werden sollen. Informationen über die Reihenfolge, in der Dateien integriert werden, finden Sie unter Lade-Reihenfolge.

Hinweis: Firefox löst URLs in integrierten CSS-Dateien relativ zur CSS-Datei selbst auf, anstatt zur Seite, in die sie integriert ist.

css_origin
Optional
String

Der Stilursprung für die CSS-Integration:

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

Diese Eigenschaft ist in Firefox und Safari nicht case-sensitiv.

exclude_globs Array Ein Array von Zeichenfolgen, die Platzhalter enthalten. Siehe unten Übereinstimmende URL-Muster.
exclude_matches Array Ein Array von Übereinstimmungsmustern. Siehe unten Übereinstimmende URL-Muster.
include_globs Array Ein Array von Zeichenfolgen, die Platzhalter enthalten. Siehe unten Übereinstimmende URL-Muster.
js Array

Ein Array von Pfaden, relativ zu manifest.json, die JavaScript-Dateien referenzieren, die in übereinstimmende Seiten integriert werden sollen. Informationen über die Reihenfolge, in der Dateien integriert werden, finden Sie unter Lade-Reihenfolge.

match_about_blank Boolean

Fügen Sie 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 Mustern entspricht, die im Rest des content_scripts-Schlüssels angegeben sind.

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 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 Scripts 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 ihr 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 Wildcard-Pfad-Glob spezifizieren. Standardmäßig ist false.
matches Array

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

Dies ist der einzige zwingende 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 Strings angeben, von denen jeder einen Status im Prozess des Ladens eines Dokuments identifiziert. 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 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 Standard-Ausführungsumgebung für Content Scripts. Diese Umgebung ist von dem Kontext der Seite isoliert: während sie dasselbe Dokument teilen, unterscheiden sich die globalen Umgebungen 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 Scripts verfügbar sind.

Warnung: Aufgrund des Fehlens einer Isolierung 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 lesen, darauf zugreifen oder ä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 Zeit eingesetzt, die durch run_at festgelegt wird (zuerst document_start, dann document_end und schließlich document_idle):

  • In der Reihenfolge, die im content_scripts-Array für jedes Objekt angegeben ist, das einen passenden run_at-Wert hat, dann:
    • CSS wird in der Reihenfolge angewendet, die im css-Array angegeben ist. 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ü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 folgendermaßen geladen, wenn eine mozilla.org-Domain geöffnet wird:

  • "run-first.js" - weil es auf document_start ausgeführt werden soll.
  • "jquery.js" - weil es im ersten Array angefordert wird, um auf "document_idle" ausgeführt zu werden.
  • "my-content-script.js" - weil es das zweite Element im ersten Array ist, das "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 js-Eigenschaft ist.
  • "yet-another-content-script.js"

Übereinstimmende URL-Muster

Der Schlüssel "content_scripts" fügt Content Scripts an Dokumente basierend auf URL-Übereinstimmung an: Wenn die URL des Dokuments mit der Spezifikation im Schlüssel übereinstimmt, wird das Skript angeheftet. 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 verpflichtende Schlüssel ist, werden die anderen drei Schlüssel verwendet, um die URLs, die übereinstimmen, weiter zu begrenzen. Um mit dem Schlüssel insgesamt ü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 Zeichenfolge, die Platzhalter enthalten kann.

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

  1. * steht für null oder mehr Zeichen
  2. ? steht für genau ein Zeichen.

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

Beispiel

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

Dies injiziert ein einzelnes Content Script borderify.js in alle Seiten unter mozilla.org oder einer 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 Scripts in alle Seiten unter mozilla.org oder einer seiner Subdomains, außer developer.mozilla.org, unabhängig davon, ob es über HTTP oder HTTPS bereitgestellt wird.

Die Content Scripts sehen dieselbe Ansicht des DOMs 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.

Spezifikationen

Spezifikation
Web Extensions
# key-content_scripts

Browser-Kompatibilität