Ihre erste Erweiterung
Hinweis: Wenn Ihnen die grundlegenden Konzepte von Browser-Erweiterungen vertraut sind, überspringen Sie diesen Abschnitt und sehen Sie, wie Erweiterungsdateien zusammengefügt werden. Verwenden Sie dann die Referenzdokumentation, um mit dem Erstellen Ihrer Erweiterung zu beginnen. Besuchen Sie den Firefox Extension Workshop, um mehr über den Workflow zum Testen, Veröffentlichen und für Erweiterungen in Firefox zu erfahren.
Dieser Artikel führt Sie durch die Erstellung einer Erweiterung für Firefox, von Anfang bis Ende. Die Erweiterung fügt jeder Seite, die von mozilla.org
oder einem seiner Subdomains geladen wird, einen roten Rand hinzu.
Den Quellcode für dieses Beispiel finden Sie auf GitHub: https://github.com/mdn/webextensions-examples/tree/main/borderify.
Schreiben der Erweiterung
Erstellen Sie an einem geeigneten Ort, z. B. im Documents
-Verzeichnis, ein neues Verzeichnis namens borderify
und navigieren Sie dorthin. Sie können dies mit dem Dateiexplorer Ihres Computers oder mit einem Befehlszeilen-Terminal tun. Die Verwendung des Befehlszeilen-Terminals ist eine nützliche Fähigkeit, da es Ihnen bei der fortgeschritteneren Erweiterungsentwicklung hilft. Mit dem Terminal erstellen Sie das Verzeichnis wie folgt:
mkdir borderify
cd borderify
manifest.json
Verwenden Sie einen geeigneten Texteditor, um eine neue Datei namens "manifest.json" direkt im "borderify"-Verzeichnis zu erstellen. Der Inhalt sollte folgendermaßen aussehen:
{
"manifest_version": 2,
"name": "Borderify",
"version": "1.0",
"description": "Adds a red border to all webpages matching mozilla.org.",
"icons": {
"48": "icons/border-48.png"
},
"content_scripts": [
{
"matches": ["*://*.mozilla.org/*"],
"js": ["borderify.js"]
}
]
}
- Die ersten drei Schlüssel:
manifest_version
,name
undversion
, sind obligatorisch und enthalten grundlegende Metadaten für die Erweiterung. description
ist optional, aber empfohlen: Sie wird im Add-ons-Manager angezeigt.icons
ist optional, aber empfohlen: Es erlaubt Ihnen, ein Symbol für die Erweiterung anzugeben, das im Add-ons-Manager angezeigt wird.
Der interessanteste Schlüssel hier ist content_scripts
, der Firefox anweist, ein Skript in Webseiten zu laden, deren URL einem bestimmten Muster entspricht. In diesem Fall bitten wir Firefox, ein Skript namens "borderify.js" in alle HTTP- oder HTTPS-Seiten zu laden, die von "mozilla.org" oder einer seiner Subdomains bedient werden.
Warnung:>In einigen Situationen müssen Sie eine ID für Ihre Erweiterung angeben. Wenn Sie eine Add-on-ID angeben müssen, fügen Sie den browser_specific_settings
-Schlüssel in manifest.json
ein und setzen Sie die gecko.id
-Eigenschaft:
"browser_specific_settings": {
"gecko": {
"id": "[email protected]"
}
}
icons/border-48.png
Die Erweiterung sollte ein Symbol haben. Dieses wird neben dem Eintrag der Erweiterung im Add-ons-Manager angezeigt. Unser manifest.json hat versprochen, dass wir ein Symbol bei "icons/border-48.png" haben werden.
Erstellen Sie das Verzeichnis "icons" direkt unter dem "borderify"-Verzeichnis. Speichern Sie dort ein Symbol mit dem Namen "border-48.png". Sie könnten das aus unserem Beispiel verwenden, das aus dem Google Material Design Iconset stammt und unter den Bedingungen der Creative Commons Attribution-ShareAlike Lizenz verwendet wird.
Wenn Sie Ihr eigenes Symbol bereitstellen, sollte es 48x48 Pixel groß sein. Sie könnten auch ein 96x96 Pixel großes Symbol für hochauflösende Displays bereitstellen, und wenn Sie dies tun, wird es als 96
-Eigenschaft des icons
-Objekts in manifest.json angegeben:
"icons": {
"48": "icons/border-48.png",
"96": "icons/border-96.png"
}
Alternativ könnten Sie hier eine SVG-Datei bereitstellen, die korrekt skaliert wird. (Allerdings: Wenn Sie SVG verwenden und Ihr Symbol Text enthält, sollten Sie das Tool "In Pfad umwandeln" Ihres SVG-Editors verwenden, um den Text zu glätten, damit er mit einer konsistenten Größe/Position skaliert wird.)
borderify.js
Erstellen Sie schließlich eine Datei namens "borderify.js" direkt im "borderify"-Verzeichnis. Geben Sie ihm diesen Inhalt:
document.body.style.border = "5px solid red";
Dieses Skript wird in die Seiten geladen, die dem im content_scripts
manifest.json- Schlüssel angegebenen Muster entsprechen. Das Skript hat direkten Zugriff auf das Dokument, genau wie von der Seite selbst geladene Skripte.
Ausprobieren
Überprüfen Sie zuerst, ob Sie die richtigen Dateien an den richtigen Stellen haben:
borderify/ icons/ border-48.png borderify.js manifest.json
Installation
In Firefox: Öffnen Sie die Seite about:debugging, wählen Sie die Option "This Firefox", klicken Sie auf die Schaltfläche "Load Temporary Add-on" und wählen Sie dann eine beliebige Datei im Verzeichnis Ihrer Erweiterung aus.
Die Erweiterung wird jetzt installiert und bleibt installiert, bis Sie Firefox neu starten.
Alternativ können Sie die Erweiterung über die Befehlszeile mit dem web-ext-Tool ausführen.
Testen
Hinweis:
Standardmäßig funktionieren Erweiterungen nicht im privaten Modus. Wenn Sie diese Erweiterung im privaten Modus testen möchten, öffnen Sie about:addons
, klicken Sie auf die Erweiterung und wählen Sie die Option "Allow" für "Im privaten Fenster ausführen".
Besuchen Sie nun eine Seite unter https://www.mozilla.org/en-US/
, und Sie sollten den roten Rand um die Seite sehen.
Hinweis:
Versuchen Sie es allerdings nicht auf addons.mozilla.org
! Inhaltsskripte sind auf dieser Domain derzeit blockiert.
Versuchen Sie, ein wenig zu experimentieren. Bearbeiten Sie das Inhaltsskript, um die Farbe des Rahmens zu ändern oder etwas anderes am Seiteninhalt zu tun. Speichern Sie das Inhaltsskript und laden Sie die Dateien der Erweiterung neu, indem Sie auf die Schaltfläche "Reload" in about:debugging
klicken. Sie können die Änderungen sofort sehen.
Verpacken und Veröffentlichen
Damit andere Ihre Erweiterung verwenden können, müssen Sie sie verpacken und bei Mozilla zur Signierung einreichen. Um mehr darüber zu erfahren, lesen Sie "Veröffentlichen Ihrer Erweiterung".
Was kommt als Nächstes?
Jetzt haben Sie eine Einführung in den Prozess der Entwicklung einer WebExtension für Firefox erhalten: