Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

Anatomie einer Erweiterung

Eine Erweiterung besteht aus einer Sammlung von Dateien, die für den Vertrieb und die Installation verpackt sind. Dieser Artikel beschreibt die Dateien, die in einer Erweiterung vorhanden sein können.

manifest.json

Diese Datei muss in jeder Erweiterung vorhanden sein. Sie enthält grundlegende Metadaten, wie den Namen, die Version und die erforderlichen Berechtigungen.

Das Manifest kann auch Verweise auf mehrere andere Dateitypen enthalten:

Background-Skripte

Skripte, die auf Browserevents reagieren.

Icons

Für die Erweiterung und alle Schaltflächen, die sie definieren könnte.

Seitenleisten, Popups und Einstellungsseiten

HTML-Dokumente, die Inhalte für verschiedene Benutzeroberflächenkomponenten bereitstellen.

Content-Skripte

JavaScript, das zusammen mit Ihrer Erweiterung bereitgestellt wird und das Ihre Erweiterung in Webseiten einfügt.

Webzugängliche Ressourcen

Verpackte Inhalte, die Webseiten und Content-Skripten zugänglich gemacht werden.

Die Komponenten einer Erweiterung. Die manifest.json muss in allen Erweiterungen vorhanden sein. Sie liefert Verweise auf Hintergrundseiten, Content-Skripte, Browseraktionen, Seitenaktionen, Einstellungsseiten und webzugängliche Ressourcen. Hintergrundseiten werden in HTML und JavaScript verfasst. Content-Skripte werden in JavaScript und CSS verfasst. Der Benutzer klickt auf ein Icon, um Browseraktionen und Seitenaktionen auszulösen, die ein Popup anzeigen können, das aus HTML, CSS und JavaScript besteht. Einstellungsseiten bestehen aus HTML, CSS und JavaScript.

Sehen Sie sich die Referenzseite manifest.json für alle Details an.

Zusätzlich zu den im Manifest aufgelisteten können Erweiterungen weitere Erweiterungsseiten und unterstützende Dateien enthalten.

Background-Skripte

Erweiterungen müssen häufig auf Ereignisse reagieren, die im Browser unabhängig von der Lebenszeit einer bestimmten Webseite oder eines Browserfensters auftreten. Dafür sind Hintergrundskripte da.

Background-Skripte können persistent oder nicht persistent sein.

  • Persistente Hintergrundskripte werden geladen, sobald die Erweiterung geladen wird und bleiben geladen, bis die Erweiterung deaktiviert oder deinstalliert wird. Nur Manifest-V2-Erweiterungen können persistente Hintergrundskripte verwenden.
  • Nicht-persistente Hintergrundskripte werden bei Bedarf geladen, um auf ein Ereignis zu reagieren, und entladen, wenn sie untätig werden. Manifest-V3-Erweiterungen verwenden nur nicht-persistente Hintergrundskripte und Manifest-V2-Erweiterungen können sich für dieses Verhalten entscheiden.

Sie können in dem Skript alle der WebExtensions-APIs verwenden, wenn Sie die erforderlichen Berechtigungen angefordert haben.

Weitere Informationen finden Sie im Artikel über Background-Skripte.

Seitenleisten, Popups und Einstellungsseiten

Ihre Erweiterung kann Benutzeroberflächenkomponenten umfassen, die mit einem HTML-Dokument definiert sind:

Seitenleiste

Ein Bereich, der links im Browserfenster neben der Webseite angezeigt wird.

Ein Dialog, der angezeigt wird, wenn der Benutzer auf einen Symbolleistenschalter oder einen Adressleistenknopf klickt.

Einstellungen

Eine Seite, die angezeigt wird, wenn der Benutzer auf die Einstellungen Ihres Add-ons im nativen Add-ons-Manager des Browsers zugreift.

Für jede dieser Komponenten erstellen Sie eine HTML-Datei und verweisen darauf mit einer bestimmten Eigenschaft in manifest.json. Die HTML-Datei kann CSS- und JavaScript-Dateien enthalten, ähnlich wie eine normale Webseite.

Alle diese sind Erweiterungsseiten. Anders als eine normale Webseite kann das JavaScript Ihrer Erweiterung dieselben privilegierten WebExtensions-APIs wie Ihr Hintergrundskript verwenden.

Erweiterungsseiten

Sie können auch HTML-Dokumente in Ihre Erweiterung einfügen, die nicht an eine vordefinierte Benutzeroberflächenkomponente angehängt sind. Anders als die Dokumente, die Sie für Seitenleisten, Popups oder Einstellungsseiten bereitstellen, haben diese keinen Eintrag in manifest.json. Sie haben jedoch ebenfalls Zugriff auf alle dieselben privilegierten WebExtensions-APIs wie Ihr Hintergrundskript.

Sie würden eine solche Seite typischerweise mit windows.create() oder tabs.create() laden.

Siehe Erweiterungsseiten, um mehr zu erfahren.

Content-Skripte

Benutzen Sie Content-Skripte, um auf Webseiten zuzugreifen und sie zu manipulieren. Content-Skripte werden in Webseiten geladen und laufen im Kontext dieser bestimmten Seite.

Content-Skripte sind von der Erweiterung bereitgestellte Skripte, die im Kontext einer Webseite ausgeführt werden; dies unterscheidet sich von Skripten, die von der Seite selbst geladen werden, einschließlich solcher, die in <script>-Elementen innerhalb der Seite bereitgestellt werden.

Content-Skripte können auf das DOM der Seite zugreifen und es manipulieren, wie jedes andere Skript, das von der Seite geladen wird. Im Gegensatz zu normalen Seitenskripten können Content-Skripte jedoch:

Content-Skripte können nicht direkt auf normale Seitenskripte zugreifen, können aber Nachrichten mit ihnen über die standardmäßige window.postMessage() API austauschen.

Ihre Erweiterung kann auch CSS in Webseiten injizieren, indem sie den Mechanismus verwendet, um Content-Skripte zu injizieren.

Weitere Informationen finden Sie im Artikel über Content-Skripte.

Webzugängliche Ressourcen

Webzugängliche Ressourcen sind Ressourcen – wie Bilder, HTML, CSS und JavaScript –, die Sie in die Erweiterung einfügen und die Sie für Content-Skripte und Seitenskripte zugänglich machen möchten. Ressourcen, die webbasiert zugänglich gemacht werden, können von Seitenskripten und Content-Skripten unter Verwendung eines speziellen URI-Schemas referenziert werden.

Wenn ein Content-Skript beispielsweise Bilder in Webseiten einfügen möchte, können Sie diese in die Erweiterung einfügen und webzugänglich machen. Dann könnte das Content-Skript img-Tags erstellen und anhängen, die auf die Bilder über das src-Attribut verweisen.

Um mehr zu erfahren, sehen Sie die Dokumentation zum "web_accessible_resources" manifest.json Schlüssel.