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 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 spezifiziert, die für das Laden der Skripte übereinstimmen müssen;
  • 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 kontrollieren, wie und wann Content Scripts geladen werden.

Diese Tabelle beschreibt alle Eigenschaften, die Sie einfügen können.

Name Typ Beschreibung
all_frames Boolean
true

Injiizieren Sie die in js und css spezifizierten Skripte in alle Frames, die die angegebenen URL-Anforderungen erfüllen, auch wenn der Frame nicht der oberste Frame in einem Tab ist. Dies injiziert nicht in Kinder-Frames, bei denen nur deren Eltern die URL-Anforderungen erfüllen und der Kinder-Frame nicht die URL-Anforderungen erfüllt. Die URL-Anforderungen werden für jeden Frame unabhängig überprüft.

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

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

Der Standardwert ist false.

css Array

Ein Array von Pfaden, relativ zu manifest.json, das CSS-Dateien referenziert, die in übereinstimmende Seiten injiziert werden sollen. Für Informationen über die Reihenfolge, in der Dateien injiziert werden, siehe eine Ladereihenfolge.

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

css_origin
Optional
String

Der Stilursprung für die CSS-Injektion:

  • "user", um es als Benutzer-Stylesheet hinzuzufügen.
  • "author", um es als Autoren-Stylesheet hinzuzufügen.
Der Standardwert ist "author".

Diese Eigenschaft ist in Firefox und Safari nicht case sensitive.

exclude_globs Array Ein Array von Zeichenfolgen mit Platzhaltern. Siehe URL-Musterabgleich unten.
exclude_matches Array Ein Array von Musterabgleichen. Siehe URL-Musterabgleich unten.
include_globs Array Ein Array von Zeichenfolgen mit Platzhaltern. Siehe URL-Musterabgleich unten.
js Array

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

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, die Muster erfüllt, die im restlichen Teil des content_scripts-Schlüssels angegeben sind.

Dies ist besonders nützlich, um Skripte in leere iframes auszuführen, deren URL "about:blank" ist. Dafür sollten Sie auch den Schlüssel all_frames setzen.

Zum 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 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, 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, sogar wenn der Dokumentenursprung opak ist (durch die Verwendung von CSP oder iframe sandbox). Match-Muster in matches müssen ein Platzhalter-Pfadmuster spezifizieren. Der Standardwert ist false.
matches Array

Ein Array von Musterabgleichen. Siehe URL-Musterabgleich unten.

Dies ist der einzige verpflichtende Schlüssel.

run_at String

Diese Option bestimmt, wann die in css und js spezifizierten Dateien injiziert werden. Sie können hier eine von drei Zeichenfolgen angeben, wobei jede einen Zustand im Prozess des Ladens eines Dokuments identifiziert. Die Zustände entsprechen direkt der [`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 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 Scripts. Diese Umgebung ist vom Kontext der Seite isoliert: Während sie das gleiche Dokument teilen, unterscheiden sich die globalen Bereiche und die 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 Scripts verfügbar sind.

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

Der Standardwert ist "ISOLATED".

Ladereihenfolge

Registrierte Objekte in content_scripts werden in übereinstimmende Webseiten zur durch run_at angegebenen Zeit 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 übereinstimmenden run_at-Wert, dann:
    • CSS wird in der Reihenfolge angewendet, die in seinem css-Array angegeben ist. Standardmäßig erhält CSS aus dem "author"-Ursprung Priorität, es sei denn, css_origin ist auf "user" gesetzt.
    • JavaScript-Code wird in der Reihenfolge ausgeführt, die in seinem 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 wie folgt geladen, wenn eine Domain von mozilla.org geöffnet wird:

  • "run-first.js" - weil es angefordert wird, bei "document_start" auszuführen.
  • "jquery.js" - weil es im ersten Array angefordert wird, bei "document_idle" auszuführen.
  • "my-content-script.js" - weil es das zweite Element im ersten Array mit der Anforderung ist, bei "document_idle" auszuführen.
  • "my-css.css" - weil ein Objektmit CSS vor seinem JavaScript geladen wird.
  • "another-content-script.js" - weil es das erste Element in der js-Eigenschaft ist.
  • "yet-another-content-script.js"

URL-Musterabgleich

Der Schlüssel "content_scripts" fügt Content Scripts zu Dokumenten basierend auf dem URL-Matching hinzu: Wenn die URL des Dokuments der im Schlüssel angegebenen Spezifikation entspricht, dann 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 Musterabgleichen

exclude_matches

ein Array von Musterabgleichen

include_globs

ein Array von Globs

exclude_globs

ein Array von Globs

Um mit einer dieser Eigenschaften übereinzustimmen, muss eine URL mindestens eines der Elemente in ihrem Array erfüllen. 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 einzuschränken. Um mit dem Schlüssel als Ganzes ü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. * passt auf null oder mehr Zeichen
  2. ? passt genau auf ein Zeichen.

Zum Beispiel: "*na?i" würde auf "illuminati" und "annunaki" passen, aber nicht auf "sagnarelli".

Beispiel

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

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

Die Content Scripts sehen die gleiche 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