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

View in English Always switch to English

Unterschiede zwischen API-Implementierungen

Die Browser-Erweiterungen-API ist ein aufkommender Standard. Infolgedessen gibt es, obwohl sie von den meisten großen Browsern unterstützt wird – einschließlich Firefox, Chrome, Edge und Opera – Unterschiede zwischen den verschiedenen Implementierungen. Dies bedeutet, dass möglicherweise einige Änderungen erforderlich sind, um Ihre Erweiterung für mehrere Browser zu implementieren.

Unter den verschiedenen Browsern, die die Erweiterungen-API unterstützen, ist Firefox der Standard am nächsten und daher der beste Ausgangspunkt bei der Entwicklung von Browser-Erweiterungen.

Die Unterschiede zwischen den API-Implementierungen der Browser fallen in vier Bereiche: Namensraum, asynchrone Ereignisbehandlung, API-Abdeckung und Manifest-Schlüssel.

Namensraum

Sie beziehen sich auf alle API-Funktionen von Erweiterungen über einen Namensraum. Zum Beispiel erstellt browser.alarms.create({delayInMinutes}); in Firefox einen Alarm, der nach der in delayInMinutes angegebenen Zeit ausgelöst wird.

Es gibt zwei API-Namensräume, die verwendet werden:

  • browser, verwendet in Firefox und Safari, und ab Chrome 148, in Chrome, Edge und Opera (siehe Historische Unterschiede auf der Chrome-Inkompatibilitäten-Seite für weitere Details).
  • chrome, verwendet in Chrome, Edge und Opera.

Asynchrone Ereignisbehandlung

JavaScript bietet mehrere Möglichkeiten zur Behandlung asynchroner Ereignisse. Der vorgeschlagene Standard für die Erweiterungen-API ist die Verwendung von Promises. Der Ansatz der Promises bietet erhebliche Vorteile bei der Handhabung verketteter asynchroner Ereignisaufrufe.

Firefox und Safari implementieren Promises für die Erweiterungen-API. Mit der Einführung von Manifest V3 begannen auch Chrome, Edge und Opera, Promises für asynchrone Methoden zu bieten, mit vollständiger Abdeckung in Chrome 152. Siehe Historische Unterschiede auf der Chrome-Inkompatibilitäten-Seite für weitere Details.

Hinweis: Alle Hauptbrowser unterstützen auch Callbacks für die Kompatibilität.

Wenn Sie nicht mit der Handhabung von asynchronen Ereignissen oder Promises in JavaScript vertraut sind, schauen Sie sich Einführung in asynchrones JavaScript: Callbacks, Promises und Async/Await oder die MDN-Seite Using promises an.

API-Abdeckung

Die Unterschiede in der Implementierung der Erweiterungen-API-Funktionen zwischen den Browsern fallen in drei breite Kategorien:

  • Mangelnde Unterstützung für eine gesamte Funktion.
  • Unterschiede in der Unterstützung von Funktionen innerhalb einer Funktion. Zum Beispiel unterstützt Firefox zum Zeitpunkt des Schreibens nicht die notification-Funktionen-Methode onButtonClicked, während Firefox der einzige Browser ist, der onShown unterstützt.
  • Proprietäre Funktionen, die browserspezifische Features unterstützen. Zum Beispiel ist Containers zum Zeitpunkt des Schreibens ein Firefox-spezifisches Feature, das von der contextualIdentities-Funktion unterstützt wird.

Manifest-Schlüssel

Die Unterschiede in den unterstützten manifest.json-Schlüsseln zwischen den Browsern lassen sich grob in zwei Kategorien unterteilen:

  • Erweiterungsinformation-Attribute. Zum Beispiel fügen Firefox und Opera zum Zeitpunkt des Schreibens den developer-Schlüssel hinzu (zusätzlich zum author-Schlüssel), um Details über den Erweiterungsentwickler zu protokollieren.
  • Erweiterungsfunktionen. Zum Beispiel unterstützt nur Firefox zum Zeitpunkt des Schreibens den protocol_handlers-Schlüssel (der webbasierte Protokoll-Handler registriert, Anwendungen, die wissen, wie man bestimmte Arten von Links behandelt).

Weitere Informationen

Detaillierte Informationen über die Unterschiede in den unterstützten Browser-Erweiterungen-API-Features finden Sie in: