google-chrome-extension
Portierung von / nach Firefox
Suche…
Bemerkungen
Wenn Sie eine Firefox- Version vor 48 verwenden, benötigen Sie in
manifest.json
einen zusätzlichen Schlüssel, der als Anwendungen bezeichnet wird:
"applications": {
"gecko": {
"id": "[email protected]",
"strict_min_version": "42.0",
"strict_max_version": "50.*",
"update_url": "https://example.com/updates.json"
}
}
Hinweis:
Mit dem Release von Firefox 48 kann die Erweiterungssignierung in den Release- und Beta-Channel-Builds nicht mehr mithilfe einer Voreinstellung deaktiviert werden. Wie bereits bei der Ankündigung der Erweiterungssignatur beschrieben, veröffentlichen wir spezialisierte Builds, die diese Einstellung unterstützen, sodass Entwickler weiterhin den Code testen können, aus dem Beta- und Releasebuilds generiert werden.
Status von WebExtensions
:
WebExtensions befinden sich derzeit in einem experimentellen Alpha-Zustand. Mit Firefox 46 können Sie WebExtensions wie jedes andere Add-On für Firefox-Benutzer veröffentlichen. Wir streben eine erste stabile Veröffentlichung in Firefox 48 an.
UPD : Firefox 48 veröffentlicht am 02.08.2016.
Links:
API-Unterstützungsstatus - Die Liste der APIs und deren Status.
WebExtensions - JavaScript-APIs, Schlüssel von manifest.json, Tutorials usw.
Portierung über WebExtensions
Bevor Sie über die Portierung von Firefox- Erweiterungen von / nach sprechen, sollten Sie wissen, was WebExtensions
ist.
WebExtensions
- ist eine Plattform, die eine API zum Erstellen von Firefox- Erweiterungen darstellt.
Es verwendet dieselbe Erweiterungsarchitektur wie Chromium . Daher ist diese API in vielerlei Hinsicht mit der API in Google Chrome und Opera (Opera, die auf Chromium basiert) kompatibel. In vielen Fällen funktionieren Erweiterungen, die für diese Browser entwickelt wurden, in Firefox mit einigen Änderungen oder sogar ohne diese.
MDN empfiehlt die Verwendung von WebExtension
für neue Erweiterungen:
In Zukunft werden WebExtensions die empfohlene Methode zur Entwicklung von Firefox-Add-Ons sein, und andere Systeme werden nicht mehr weiterentwickelt.
Wenn Sie Erweiterungen in Firefox portieren möchten, müssen Sie wissen, wie die Erweiterung geschrieben wurde.
Erweiterungen für Firefox können auf WebExtension
, Add-on SDK
oder XUL
basieren.
Kompatible Erweiterungen basierend auf WebExtension
Bei der Verwendung von WebExtension
muss die Liste der Inkompatibilitäten durchgesehen werden, da einige Funktionen vollständig oder teilweise unterstützt werden, das heißt, man sollte manifest.json
überprüfen.
Es ermöglicht auch die Verwendung desselben Namensraums :
Derzeit sind alle APIs über den Chrome. * -Namensraum zugänglich. Wenn wir mit dem Hinzufügen eigener APIs beginnen, erwarten wir, dass sie dem Browser * hinzugefügt werden. * Namespace. Entwickler können mithilfe der Featureerkennung feststellen, ob eine API im Browser verfügbar ist. *.
Eine einfache Erweiterung, die in Firefox und Google Chrome verwendet werden kann
manifest.json
:
{
"manifest_version": 2,
"name": "StackMirror",
"version": "1.0",
"description": "Mirror reflection of StackOverflow sites",
"icons": {
"48": "icon/myIcon-48.png"
},
"page_action": {
"default_icon": "icon/myIcon-48.png"
},
"background": {
"scripts" : ["js/background/script.js"],
"persistent": false
},
"permissions": ["tabs", "*://*.stackoverflow.com/*"]
}
background
:
function startScript(tabId, changeInfo, tab) {
if (tab.url.indexOf("stackoverflow.com") > -1) {
chrome.tabs.executeScript(tabId,
{code: 'document.body.style.transform = "scaleX(-1)";'}, function () {
if (!chrome.runtime.lastError) {
chrome.pageAction.show(tabId);
}
});
}
}
chrome.tabs.onUpdated.addListener(startScript);
Packet das Projekt als Standard- zip
Datei, jedoch mit der Erweiterung .xpi
.
Dann müssen Sie die Erweiterung in Firefox laden.
Öffnen Sie die about:addons
Seite, die Sie über Menü> Add-Ons aufrufen können.
Klicken Sie für alle Add- On - Schaltflächen auf Extras .
Wenn die Erweiterung geladen ist, sieht die Seite about:addons
aus:
Anweisungen zum Laden der Erweiterung in Google Chrome finden Sie in einem anderen Thema - Erste Schritte mit Chrome Extensions .
Das Ergebnis der Erweiterungsoperation ist in beiden Browsern ( Firefox / Google Chrome ) gleich:
Wenn das aktuelle Add-On auf Add-On-SDK oder XUL basiert
Wenn die Erweiterung, die portiert wird, auf dem Add-on SDK
basiert, muss die Vergleichstabelle nach Add-on SDK
=> WebExtensions
. Jeder Abschnitt der Tabelle beschreibt das Äquivalent des Add-on SDK
für WebExtension
.
Ein ähnlicher Ansatz und für XUL-Erweiterungen.
Vergleich mit XUL / XPCOM-Erweiterungen