google-chrome-extension
Porten naar / van Firefox
Zoeken…
Opmerkingen
Als u een Firefox- versie vóór 48 gebruikt, hebt u ook een extra sleutel nodig in
manifest.json
genaamd applicaties:
"applications": {
"gecko": {
"id": "[email protected]",
"strict_min_version": "42.0",
"strict_max_version": "50.*",
"update_url": "https://example.com/updates.json"
}
}
Notitie:
Met de release van Firefox 48 kan het ondertekenen van extensies niet langer worden uitgeschakeld in de release en worden bètakanalen opgebouwd met behulp van een voorkeur. Zoals uiteengezet toen extensie-ondertekening werd aangekondigd, publiceren we gespecialiseerde builds die deze voorkeur ondersteunen, zodat ontwikkelaars kunnen blijven testen met de code waaruit bèta- en release-builds worden gegenereerd.
Status van WebExtensions
:
WebExtensions bevinden zich momenteel in een experimentele alfastatus. Vanaf Firefox 46 kunt u WebExtensions voor Firefox-gebruikers publiceren, net als elke andere add-on. We streven naar een eerste stabiele release in Firefox 48.
UPD : Firefox 48 vrijgegeven 02.08.2016.
Links:
API-ondersteuningsstatus - De lijst met API's en hun status.
WebExtensions - JavaScript API's, sleutels van manifest.json, tutorials, etc.
Porten via WebExtensions
Alvorens te praten over het porteren van Firefox- extensies van / naar, moet men weten wat WebExtensions
is.
WebExtensions
- is een platform dat een API vertegenwoordigt voor het maken van Firefox- extensies.
Het gebruikt dezelfde extensie-architectuur als Chromium , waardoor deze API op veel manieren compatibel is met API in Google Chrome en Opera (Opera die is gebaseerd op Chromium). In veel gevallen werken extensies die voor deze browsers zijn ontwikkeld in Firefox met een paar wijzigingen of zelfs helemaal niet.
MDN beveelt aan om WebExtension
te gebruiken voor nieuwe extensies:
In de toekomst zullen WebExtensions de aanbevolen manier zijn om Firefox-add-ons te ontwikkelen en andere systemen zullen verouderd zijn.
Gezien het voorgaande, als u extensies naar Firefox wilt porteren, moet u weten hoe de extensie is geschreven.
Extensies voor Firefox kunnen gebaseerd zijn op WebExtension
, Add-on SDK
of XUL
.
Compatibele extensies op basis van WebExtension
Wanneer u WebExtension
, moet u de lijst met incompatibiliteit WebExtension
, omdat sommige functies volledig of gedeeltelijk worden ondersteund, dat wil zeggen dat u iemands manifest.json
moet controleren.
Het maakt het ook mogelijk om dezelfde naamruimte te gebruiken :
Op dit moment zijn alle API's toegankelijk via de chrome. * Namespace. Wanneer we onze eigen API's beginnen toe te voegen, verwachten we deze aan de browser. * Namespace toe te voegen. Ontwikkelaars kunnen functiedetectie gebruiken om te bepalen of een API beschikbaar is in de browser. *.
Een eenvoudige extensie die kan werken in Firefox en 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
script:
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);
Project .xpi
als standaard zip
, maar met .xpi
extensies.
Vervolgens moet u de extensie in Firefox laden .
Open de pagina about:addons
, toegankelijk via Menu> Add-ons .
Klik op Tools voor alle add-ons knop.
Wanneer de extensie is geladen, ziet de pagina about:addons
er als volgt uit:
Aanwijzingen voor het laden van de extensie in Google Chrome staan in een ander onderwerp - Aan de slag met Chrome-extensies .
Het resultaat van de extensiebewerking is hetzelfde in beide browsers ( Firefox / Google Chrome ):
Als de huidige add-on is gebaseerd op Add-on SDK of XUL
Wanneer de extensie die wordt geporteerd is gebaseerd op Add-on SDK
, moet u de vergelijkingstabel voor Add-on SDK
=> WebExtensions
, omdat deze technologieën vergelijkbare functies hebben, maar verschillen in implementatie. Elk gedeelte van de tabel beschrijft het equivalent van Add-on SDK
voor WebExtension
.
Vergelijking met de add-on SDK
Een vergelijkbare aanpak en voor XUL-uitbreidingen.
Vergelijking met XUL / XPCOM-extensies