firefox-addon Tutorial
Erste Schritte mit Firefox-Addon
Suche…
Einführung
Add-Ons:
Firefox-Add-Ons werden im Allgemeinen in Erweiterungen und dann in "andere Typen" von Firefox-Add-Ons zusammengefasst.
Erweiterungen
Erweiterungen ermöglichen die Anpassung von Firefox durch Hinzufügen oder Ändern der Funktionalität von Firefox. Einige der Arten von Dingen, die mit Erweiterungen gemacht werden können, sind:
- Ändern Sie die Art und Weise, wie bestimmte Websites angezeigt werden, ihren Inhalt oder wie sie mit ihnen interagieren
- Passen Sie die Firefox-Benutzeroberfläche an
- Fügen Sie zusätzliche Funktionen zu Firefox hinzu
- Ändern Sie die Funktionsweise der vorhandenen Firefox-Funktionen
Firefox-Erweiterungen werden hauptsächlich in JavaScript mit einigen JavaScript-APIs geschrieben.
Ablehnung und Entfernung aller Arten von Erweiterungen außer WebExtensions
Firefox-Add-Ons, insbesondere Erweiterungen, sind im Moment in Bewegung. Mozilla hat angekündigt und bestätigt, dass alle Arten von Firefox-Erweiterungen mit Ausnahme von WebExtensions als veraltet gelten und dass alle nicht auf WebExtensions basierenden Erweiterungen in Firefox 57 deaktiviert werden, das für 2017-11-14 geplant ist .
Arten von Erweiterungen
Firefox hat vier Arten von Erweiterungen (alle werden allgemein als Add-Ons bezeichnet):
WebExtensions : WebExtensions sind die einzigen Firefox-Erweiterungen, die unterstützt werden. Diese Add-Ons werden durch eine manifest.json- Datei beschrieben. Diese API ähnelt der für Google Chrome-Erweiterungen verwendeten. Diese Add-Ons verwenden zusätzlich zu Javascript HTML und CSS. Mozilla hat zwar angegeben, dass diese API die Zukunft der Firefox-Erweiterungen ist, diese API befindet sich jedoch noch in der Entwicklung. Im Moment entwickeln und testen Sie Ihr WebExtension-Add-On wahrscheinlich am besten mit Firefox Developer Edition oder Firefox Nightly . Sie sollten auch sorgfältig notieren, welche Version von Firefox für die gewünschte Funktionalität erforderlich ist. Diese Informationen sind im Abschnitt "Browserkompatibilität" auf den MDN-Dokumentationsseiten enthalten.
WebExtensions verwenden eine wesentlich andere API als die anderen drei Erweiterungstypen. Die Schnittstellen der anderen Add-On-Typen können absichtlich nicht verwendet werden.
Add-On-SDK : [ veraltet; zum Entfernen geplant ] Diese Add-Ons werden in einer package.json- Datei beschrieben, die anfänglich durch Ausführen von
jpm init
generiert wird. Für diese Erweiterungen wird häufig mithilferequire()
High-Level- oder Low-Level- APIs für die Verbindung mit Firefox verwendet. Diese Add-Ons verwenden zusätzlich zu Javascript HTML und CSS. Derzeit werden diese Add-Ons in eine Bootstrapped-Erweiterungjpm run
wenn sie zum Testen vonjpm run
geladen oder in einer .xpi- Datei vonjpm xpi
für die Verteilung konsolidiert werden (z. B. Upload in AMO / Mozilla). Mit anderen Worten, es handelt sich um Bootstrap-Erweiterungen mit einem SDK-Wrapper.Mozilla scheint sich verpflichtet zu fühlen, weiterhin Add-On-SDK-basierte Erweiterungen zu unterstützen, solange die Erweiterung nicht
require("chrome")
oder auf andere Weise von XUL , XPCOM und XBL abhängig ist.Die meisten Funktionen, die in einer Bootstrapped-Erweiterung ausgeführt werden können, können in einem Add-On-SDK-basierten Add-On durchgeführt werden. Viele dieser Dinge umgehen jedoch das SDK, wodurch ein erheblicher Teil der Vorteile der Verwendung des Add-On-SDKs wegfällt.
Bootstrapped : [ veraltet; zum Entfernen geplant ] Diese Erweiterungen werden auch als "restartless" bezeichnet, da sie der erste Mozilla-Erweiterungstyp waren, für den die Anwendung nicht neu gestartet werden musste, um das Add-On zu laden / entladen. Restartless ist jedoch eine Beschreibung der Funktionsweise. Die Verwendung von "restartless" als Namen für diese Art von Add-On ist verwirrend, da sowohl Add-On-SDK als auch WebExtension-Add-Ons nicht erfordern, dass die Anwendung beim Laden oder Entladen des Add-Ons neu gestartet wird. Aus diesem Grund besteht die Tendenz, dass für diesen Add-On-Typ der Begriff "restartless" nicht mehr verwendet wird.
Diese Add-Ons verwenden zusätzlich zu Javascript HTML und CSS. Viele interagieren auch mit Firefox über XUL .
Diese Add-Ons verfügen über eine JavaScript-Datei mit dem Namen bootstrap.js, die Einstiegspunkte (Funktionen) enthalten muss, die für add-on
startup()
,shutdown()
,install()
unduninstall()
aufgerufen werden.Diese Add-Ons enthalten eine install.rdf- Datei, die das Add-On beschreibt. Sie enthalten normalerweise, aber nicht immer, eine Datei chrome.manifest , in der beschrieben wird, wie sich die Dateien und Verzeichnisse in der Erweiterung auf die Mozilla-Anwendung beziehen (z. B. Firefox).
Die meisten, aber nicht alle Dinge, die in Overlay / XUL / Legacy-Erweiterungen ausgeführt werden können, können in Bootstrapped-Add-Ons ausgeführt werden. Alles, was mit dem Add-On-SDK gemacht werden kann, kann in einer Bootstrapped-Erweiterung durchgeführt werden (Add-On-SDK-Erweiterungen sind Bootstrap-Add-Ons mit einigen JavaScript-basierten API-Layern).
Mozilla hat erklärt, dass sie beabsichtigen, "Add-Ons, die von XUL , XPCOM und XBL abhängen, abzulehnen ". Obwohl nicht alle Bootstrapped-Add-Ons von diesen Technologien abhängen, neigen Bootstraps-Add-Ons dazu, auf einer niedrigeren Ebene als Add-On-SDK- und WebExtension-Add-Ons zu arbeiten. Daher setzen sie diese Technologien eher ein. Es gibt einige, die sagen, dass alle Bootstrapped-Add-Ons als veraltet gelten sollen, aber es ist nicht klar, dass dies der Fall ist. Schließlich werden Add-On-SDK-Erweiterungen nicht veraltet (es sei denn, sie
require("chrome")
oder hängen von XUL, XPCOM oder XBL ab) und alle Add-On-SDK-Erweiterungen sind Bootstraps-Erweiterungen, nur mit einem SDK-Wrapper .Overlay / XUL / Legacy : [ veraltet; zum Entfernen geplant ] Diese Add-Ons enthalten eine install.rdf- Datei, die das Add-On beschreibt, und eine Chrome.manifest- Datei, in der beschrieben wird, wie sich die Dateien des Add-Ons auf die Dateien der Anwendung beziehen (z. B. Overlay). Wie das Add-On mit der Anwendung funktioniert, hängt vollständig von den in der Datei chrome.manifest beschriebenen Beziehungen ab. Die einzigen Ausnahmen sind einige Dinge wie Icons für die Erweiterung und die Datei, die die Optionen der Erweiterung beschreibt, die in der Datei install.rdf angegeben sind . Diese Erweiterungen interagieren auf sehr niedriger Ebene mit der Anwendung (z. B. Firefox). Dadurch neigen sie dazu, bei Änderungen an der Anwendung mit größerer Wahrscheinlichkeit zu brechen.
Diese Add-Ons verwenden zusätzlich zu Javascript XUL, HTML und CSS. Einige verwenden auch XPCOM und XBL .
Alle Overlay / XUL / Legacy-Erweiterungen sollen nicht mehr verwendet werden.
Andere Arten von Firefox-Add-Ons
Wenn die meisten Leute über Firefox-Add-Ons nachdenken, denken sie über die oben beschriebenen Erweiterungen nach. Es gibt jedoch einige zusätzliche Arten von Firefox-Add-Ons:
- Themes [ teilweise veraltet ] ermöglichen die Anpassung des Erscheinungsbildes von Firefox. Hauptsächlich durch die Bereitstellung unterschiedlicher CSS-Regeln für alle Teile des Browsers. "Vollständige Themen" sind veraltet und sollen teilweise durch eine derzeit nicht vorhandene Schnittstelle ersetzt werden .
- Mobile Add-Ons sind für Firefox für Android. Derzeit werden alle Firefox-Erweiterungstypen unterstützt, die ohne Neustart ausgeführt werden.
- Suchmaschinen-Plugins werden verwendet, um der Suchleiste des Browsers weitere Suchmaschinen hinzuzufügen.
- Benutzerwörterbücher ermöglichen die Verwendung der Rechtschreibprüfung in weiteren Sprachen.
- Sprachpakete fügen der Firefox-Benutzeroberfläche zusätzliche Sprachen hinzu.
- Plugins sind gemeinsam genutzte Bibliotheken, um Inhalte anzuzeigen, die von der Anwendung selbst nicht nativ angezeigt werden können.
Dieses "Beispiel" wird hauptsächlich mit einigen Modifikationen von meiner, Makyens Antwort auf eine Stackoverflow-Frage kopiert .
Einige Teile dieses Inhalts wurden kopiert oder basieren zumindest auf der Add-On-Seite in Mozilla Developer Network (MDN).
Dies wurde ursprünglich von Makyen im Abschnitt "Bemerkungen" des Firefox-Addon-Tags gepostet. Es wurde dann von Ondřej Doněk modifiziert, der ein zusätzliches "for" entfernte. In einer einzigen Bearbeitung, die von nus ausgeführt wurde , wurde es von "Remarks" in ein gepinntes Beispiel mit dem Titel "Introduction" verschoben. Dies führte leider dazu, dass das System Attributierungsinformationen verlor.
Temporäres Add-On installieren
Um ein Add-On zu testen, das Sie gerade entwickeln, möchten Sie es möglicherweise vorübergehend in Firefox installieren. Sie können dies tun, indem Sie es als temporäres Add-On laden. Um dies zu tun:
- Gehe zu
about:debugging
- Klicken Sie auf "Temporäres Add-On laden".
- Navigieren Sie in der Dateiauswahl zu dem Verzeichnis, in dem sich die Add-On-Dateien befinden
- Wählen Sie eine beliebige Datei im Ordner
- Klicken Sie auf "Öffnen".
Die folgende Animation zeigt das Laden eines Add-Ons mit dem Namen "aaaaaaaaaaaaaaaaaaa - Demo-Add-On" von " about:debugging
". Dieses Add-On wird dann in " about:addons
" angezeigt:
Als temporäres Add-On können Sie entweder ein entpacktes Add-On laden (ein Verzeichnis, das alle Dateien für das Add-On enthält, die Sie in eine .xpi- Datei packen würden) oder ein Add-On, das in ein .xpi
Archiv Temporäre Add-Ons müssen nicht signiert werden . Das temporäre Add-On bleibt installiert, bis es manuell deinstalliert wird oder Firefox neu gestartet wird.
Mozilla-Dokumentation: Temporäre Installation in Firefox
WebExtensions
WebExtensions können als temporäre Add-Ons geladen werden. Dies kann mit den Add-On-Dateien geschehen, die entweder entpackt oder in einer .xpi- Datei verpackt sind.
Firefox-Add-On-SDK
Sie können eine Firefox-Add-On-SDK-Erweiterung nicht als temporäres Add-On laden, ohne sie zuvor in eine .xpi- Datei mit jpm xpi
. Im Allgemeinen verwenden Sie jpm run
, um die Erweiterung Ihres Firefox-Add- jpm run
zu testen.
Die Dateien, die normalerweise für eine Add-on-SDK-Erweiterung bearbeitet werden, stellen keine vollständige Erweiterung dar, ohne dass zusätzliche Wrapping-Funktionen und die package.json- Datei in eine install.rdf- Datei und möglicherweise eine chrome.manifest- Datei übersetzt werden. Bei diesem Vorgang wird die Add-On-SDK-Erweiterung in ein Bootstrap / Restartless-Add-On eingeschlossen, das von Firefox verstanden wird. Ohne diesen Vorgang kann Firefox das Add-On nicht laden. Dieser Vorgang wird von jpm xpi
was zu einer gepackten .xpi- Datei führt. Die jpm run
führt diesen Vorgang ebenfalls aus, speichert jedoch die resultierenden Dateien an einem temporären Speicherort und ruft Firefox mit dem installierten Add-On auf.
Bootstrap / Restartless
Bootstrap / Restartless Add-Ons können als temporäre Add-Ons geladen werden. Dies kann mit den Add-On-Dateien geschehen, die entweder entpackt oder in einer .xpi- Datei verpackt sind.
Vermächtnis / Überlagerung / XUL
Legacy / Overlay / XUL-Add-Ons können nicht als temporäre Add-Ons geladen werden.
Installieren von nicht signierten Add-Ons
Um eine Erweiterung als normales Add-On in Release- oder Beta-Versionen von Firefox ab Version 48 zu installieren, muss die Erweiterung von Mozilla signiert sein . Eine Erweiterung wird unterschrieben, indem sie an AMO übermittelt wird . Nach dem Signieren kann die Erweiterung auf jeder unterstützten Firefox-Version installiert werden. Bei Firefox-Versionen vor Version 43 mussten Erweiterungen nicht von Mozilla signiert werden. Andere Add-On-Typen als Erweiterungen müssen nicht von Mozilla signiert werden.
Sie können nicht signierte Erweiterungen als normale Add-Ons in anderen Versionen von Firefox installieren (z. B. Firefox Developer Edition , Firefox Nightly , Unbranded Beta oder Unbranded Release ), indem Sie xpinstall.signatures.required
in about:config
auf false
. Die Einstellung dieser Option war auch in den Versionen 43–48 von Release und Beta Firefox wirksam. Die Einstellung dieser Option ist in Release- und Beta-Versionen von Firefox ab Version 48 nicht wirksam.
Die Notwendigkeit, nicht signierte Add-Ons während der Add-On-Entwicklung installieren zu können, wurde durch die Verfügbarkeit von Erweiterungen als temporäre Add-Ons stark reduziert. Temporäre Add-Ons müssen nicht signiert werden und können in jede aktuelle Version von Firefox geladen werden. Wie der Name schon sagt, besteht der Hauptnachteil der temporären Add-Ons darin, dass sie temporär sind. Sie müssen bei jedem Neustart von Firefox erneut installiert werden. Es gibt jedoch Anwendungsfälle, in denen es bevorzugt ist, ein Add-On als normales, aber nicht signiertes Add-On anstelle eines temporären Add-Ons zu installieren. Ein Add-On sollte als nicht signiertes Add-On installiert werden, wenn das Add-On installiert bleiben muss, auch wenn Firefox neu gestartet wird. Dies kann aus verschiedenen Gründen wünschenswert sein, z. B. für längerfristige Verwendungstests oder um zu testen, wie das Add-On beim Start von Firefox funktioniert.
Add-Ons für die Entwicklung installieren
Add-Ons können installiert werden als:
- Normale Add-Ons, die bis zur Deinstallation installiert werden
- Temporäre Add-Ons (nur Erweiterungen ): werden nur installiert, wenn Firefox neu gestartet wird oder vorher manuell deinstalliert werden kann.
- Verwenden von
jpm run
(nur Add-on-SDK ): Firefox wird automatisch mit einem temporären Profil ausgeführt, wenn das Add-on geladen ist. -
web-ext run
(nur WebExtensions ): Firefox wird automatisch mit einem temporären Profil ausgeführt, wobei das Add-On als temporäres Add-On geladen wird. Überwacht standardmäßig Ihre Erweiterungsdateien auf Änderungen und lädt Ihre Erweiterung automatisch, wenn sich Dateien ändern.
Normale Add-Ons
Das Installieren von .xpi
(z. B. der .xpi
Datei) kann einfach durch Ziehen und Ablegen in ein Firefox-Fenster mit dem Profil erfolgen, in dem die Installation erfolgen soll. Sie können auch direkt installiert werden, indem Sie die Erweiterung von AMO herunterladen. Abhängig von Ihrem Ziel (ein Profil, alle Profile, alle Benutzer, welches Betriebssystem usw.) gibt es weitere Optionen für die Installation von Erweiterungen .
Zu diesen anderen Optionen gehören verschiedene Verzeichnisse außerhalb des Profilverzeichnisses, in die Sie die .xpi- Datei einfügen können , damit sie für alle Benutzer einer bestimmten Firefox-Version oder für alle Profile eines bestimmten Benutzers installiert werden kann. Unter Windows können Sie auch eine Erweiterung installieren, indem Sie der Windows-Registrierung einen Schlüssel hinzufügen. Im Allgemeinen sind diese anderen Verzeichnisse keine Verzeichnisse, in die Sie ein Add-On installieren würden, in das Sie gerade schreiben. Sie können jedoch verwendet werden, um sicherzustellen, dass Sie über Add-Ons verfügen, die Sie zur Unterstützung Ihrer Tests / Entwicklung in einem beliebigen Firefox-Profil oder einer von Ihnen verwendeten Firefox-Version verwenden. Wenn Sie beispielsweise eine .xpi- Datei in <Firefox install directory>/browser/extensions
ablegen , können Sie sogar in dem von jpm run
erstellten temporären Profil eine Erweiterung zur Verfügung jpm run
(zum Testen von Firefox Add-On-SDK-basierten Erweiterungen).
Für Entwicklung / Prüfung , können Sie die Erweiterung in einem beliebigen Verzeichnis auf Ihrem lokalen Laufwerk sein durch Verwendung eines Firefox - <em:id>
Erweiterung Proxy - Datei (eine Datei als die Erweiterung der Namen erstellen <em:id>
(in install.rdf für Bootstrap / Restartless und Overlay / Legacy) im Erweiterungsverzeichnis des Profils, das eine Zeile mit dem vollständigen Pfad zu dem Verzeichnis enthält, in dem sich die Erweiterungsdateien befinden. Erweiterungen, die auf diese Weise installiert werden, sind fast immer unsigniert (siehe unten). Daher ist diese Methode nicht sehr nützlich, wenn Sie die Erweiterung in einer Release- oder Betaversion von Firefox installieren möchten.
Einschränkungen bei der Installation von normalen Add-Ons: Add-On-Signierung
Um eine Erweiterung als normales Add-On in Release- oder Beta-Versionen von Firefox ab Version 48 zu installieren, muss die Erweiterung von Mozilla signiert sein . Eine Erweiterung wird unterschrieben, indem sie an AMO übermittelt wird . Nach dem Signieren kann die Erweiterung auf jeder unterstützten Firefox-Version installiert werden. Bei Firefox-Versionen vor Version 43 mussten Erweiterungen nicht von Mozilla signiert werden. Andere Add-On-Typen als Erweiterungen müssen nicht von Mozilla signiert werden.
Sie können nicht signierte Erweiterungen als normale Add-Ons in anderen Versionen von Firefox installieren (z. B. Firefox Developer Edition , Firefox Nightly , Unbranded Beta oder Unbranded Release ), indem Sie xpinstall.signatures.required
in about:config
auf false
. Die Einstellung dieser Option war auch in den Versionen 43–48 von Release und Beta Firefox wirksam. Die Einstellung dieser Option ist in Release- und Beta-Versionen von Firefox ab Version 48 nicht wirksam.
Sie können die Prüfung der Add-On-Signatur in Firefox jedoch für alle Versionen einschließlich der Version vollständig deaktivieren. Die Antwort auf die Stack Overflow-Frage Wie kann ich die Signaturprüfung für Firefox-Add-Ons deaktivieren? beschreibt, wie das geht.
Die Notwendigkeit, nicht signierte Add-Ons zu Entwicklungszwecken installieren zu können, wurde durch die Verfügbarkeit von Erweiterungen als temporäre Add-Ons stark reduziert. Temporäre Add-Ons müssen nicht signiert werden und können in jede aktuelle Version von Firefox geladen werden. Wie der Name schon sagt, besteht der Hauptnachteil der temporären Add-Ons darin, dass sie temporär sind. Sie müssen bei jedem Neustart von Firefox erneut installiert werden. Es gibt jedoch Anwendungsfälle, in denen es bevorzugt ist, ein Add-On als normales, aber nicht signiertes Add-On anstelle eines temporären Add-Ons zu installieren. Ein Add-On sollte als nicht signiertes Add-On installiert werden, wenn das Add-On installiert bleiben muss, auch wenn Firefox neu gestartet wird. Dies kann aus verschiedenen Gründen wünschenswert sein, z. B. für längerfristige Verwendungstests oder um zu testen, wie das Add-On beim Start von Firefox funktioniert.
Temporäre Add-Ons ( nur Erweiterungen )
WebExtensions, Firefox Add-On SDK-basierte Erweiterungen und Restartless / Bootstrap-Erweiterungen können als temporäre Add-Ons von about:debugging
installiert werden. Erweiterungen können in jeder aktuellen Version von Firefox als temporäre Add-Ons geladen werden. Temporäre Add-Ons müssen nicht signiert werden und können entweder aus einem entpackten Ordner (ein Verzeichnis mit Dateien) oder aus einem gepackten Ordner (z. B. einer .xpi- Datei) geladen werden.
Ausführliche Informationen zur temporären Installation von Erweiterungen finden Sie unter Installieren eines temporären Add-Ons .