google-chrome-extension
Port till / från Firefox
Sök…
Anmärkningar
Om du använder en Firefox- version före 48, behöver du också en ytterligare nyckel i
manifest.json
applikationer:
"applications": {
"gecko": {
"id": "[email protected]",
"strict_min_version": "42.0",
"strict_max_version": "50.*",
"update_url": "https://example.com/updates.json"
}
}
Notera:
När Firefox 48 släpps kan inte längre signering av förlängning inaktiveras i utgåvan och betakanalens byggnad med hjälp av en preferens. Som beskrivits när tilläggssignering tillkännagavs publicerar vi specialiserade builds som stöder denna preferens så att utvecklare kan fortsätta testa mot koden som beta- och release-build genereras från.
Status för WebExtensions
:
WebExtensions är för närvarande i ett experimentellt alfa-tillstånd. Från Firefox 46 kan du publicera WebExtensions till Firefox-användare, precis som alla andra tillägg. Vi siktar på en första stabil version i Firefox 48.
UPD : Firefox 48 släppt 02.08.2016.
länkar:
API-supportstatus - Listan över API: er och deras status.
WebExtensions - JavaScript API: er, nycklar till manifest.json, handledning osv.
Porting via WebExtensions
Innan man pratar om porting av Firefox- tillägg från / till, bör man veta vad WebExtensions
är.
WebExtensions
- är en plattform som representerar ett API för att skapa Firefox- tillägg.
Den använder samma förlängningsarkitektur som Chromium , som ett resultat är detta API kompatibelt på många sätt med API i Google Chrome och Opera (Opera som baseras på Chromium). I många fall fungerar tillägg som utvecklats för dessa webbläsare i Firefox med några ändringar eller till och med utan dem alls.
MDN rekommenderar att använda WebExtension
för nya tillägg:
I framtiden kommer WebExtensions att vara det rekommenderade sättet att utveckla Firefox-tillägg, och andra system kommer att avskrivas.
Med hänsyn till det föregående, om du vill porta tillägg till Firefox , måste du veta hur tillägget skrevs.
Extensions för Firefox kan baseras på WebExtension
, Add-on SDK
eller XUL
.
Kompatibla tillägg baserade på WebExtension
När man använder WebExtension
måste man titta igenom listan över inkompatibiliteter , eftersom vissa funktioner stöds helt eller delvis, det vill säga, man bör kontrollera sin manifest.json
.
Det gör det också möjligt att använda samma namnutrymme :
För närvarande är alla API: er tillgängliga via chrome. * Namnutrymme. När vi börjar lägga till våra egna API: er förväntar vi oss att lägga till dem i webbläsaren. * Namnutrymme. Utvecklare kan använda funktionsdetektering för att avgöra om ett API är tillgängligt i webbläsaren. *.
En enkel förlängning som kan fungera i Firefox och Google Chrome
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);
Packa projekt som standard zip
fil, men med .xpi
tillägg.
Sedan måste du ladda tillägget i Firefox .
Öppna sidan about:addons
, tillgänglig via Meny> Tillägg .
Klicka på Verktyg för alla tilläggsknapp .
När tillägget laddas kommer sidan about:addons
att se ut så här:
Instruktioner om hur du laddar tillägget i Google Chrome finns i ett annat ämne - Komma igång med Chrome-tillägg .
Resultatet av förlängningsoperationen blir samma i båda webbläsarna ( Firefox / Google Chrome ):
Om det nuvarande tillägget är baserat på tillägg SDK eller XUL
När tillägg som porteras baseras på Add-on SDK
måste man titta igenom jämförelsetabellen för Add-on SDK
=> WebExtensions
, eftersom dessa teknologier har liknande funktioner, men skiljer sig åt i implementeringen. Varje tabellavsnitt beskriver motsvarigheten till Add-on SDK
för WebExtension
.
En liknande strategi och för XUL-tillägg.
Jämförelse med XUL / XPCOM-tillägg