google-chrome-extension
Porting to / from Firefox
Ricerca…
Osservazioni
Se stai utilizzando una versione di Firefox prima di 48, avrai anche bisogno di una chiave aggiuntiva in
manifest.json
chiamata applicazioni:
"applications": {
"gecko": {
"id": "[email protected]",
"strict_min_version": "42.0",
"strict_max_version": "50.*",
"update_url": "https://example.com/updates.json"
}
}
Nota:
Con il rilascio di Firefox 48, la firma dell'estensione non può più essere disabilitata nelle versioni di rilascio e beta channel utilizzando una preferenza. Come delineato quando è stata annunciata la firma dell'estensione, pubblichiamo build specializzati che supportano questa preferenza in modo che gli sviluppatori possano continuare a testare il codice generato da beta e release build.
Stato di WebExtensions
:
WebExtensions sono attualmente in uno stato alfa sperimentale. Da Firefox 46, puoi pubblicare WebExtensions per gli utenti di Firefox, proprio come qualsiasi altro componente aggiuntivo. Puntiamo a una prima versione stabile in Firefox 48.
UPD : Firefox 48 rilasciato il 02.08.2016.
link:
Stato di supporto dell'API - L'elenco delle API e il loro stato.
WebExtensions - API JavaScript, chiavi di manifest.json, tutorial, ecc.
Porting attraverso WebExtensions
Prima di parlare del porting delle estensioni di Firefox da / a, si dovrebbe sapere cosa sono WebExtensions
.
WebExtensions
- è una piattaforma che rappresenta un'API per la creazione di estensioni di Firefox .
Utilizza la stessa architettura di estensione di Chromium , di conseguenza, questa API è compatibile in molti modi con l'API in Google Chrome e Opera (Opera basata su Chromium). In molti casi, le estensioni sviluppate per questi browser funzioneranno in Firefox con alcune modifiche o addirittura senza di esse.
MDN consiglia di utilizzare WebExtension
per le nuove estensioni:
In futuro, WebExtensions sarà il modo consigliato per sviluppare componenti aggiuntivi di Firefox e altri sistemi saranno deprecati.
In considerazione di quanto sopra, se si desidera effettuare il porting di estensioni a Firefox , è necessario sapere come è stata scritta l'estensione.
Le estensioni per Firefox possono essere basate su WebExtension
, Add-on SDK
o XUL
.
Estensioni compatibili basate su WebExtension
Quando si utilizza WebExtension
, si deve esaminare l'elenco delle incompatibilità , poiché alcune funzioni sono supportate completamente o parzialmente, ovvero in altre parole, si dovrebbe controllare manifest.json
.
Consente inoltre di utilizzare lo stesso spazio dei nomi :
Al momento, tutte le API sono accessibili tramite lo spazio dei nomi chrome. *. Quando iniziamo ad aggiungere le nostre API, ci aspettiamo di aggiungerle al browser. * Namespace. Gli sviluppatori saranno in grado di utilizzare il rilevamento delle funzioni per determinare se un'API è disponibile nel browser. *.
Una semplice estensione che può funzionare in Firefox e 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/*"]
}
sceneggiatura di 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);
Comprimere il progetto come file zip
standard, ma con estensioni .xpi
.
Quindi, devi caricare l'estensione in Firefox .
Apri la pagina about:addons
, accessibile tramite Menu> Componenti aggiuntivi .
Fai clic sul pulsante Strumenti per tutti i componenti aggiuntivi .
Quando l'estensione è caricata la pagina about:addons
sarà simile a questa:
Le indicazioni sul caricamento dell'estensione in Google Chrome sono in un altro argomento: come iniziare con Chrome Extensions .
Il risultato dell'operazione di estensione sarà lo stesso in entrambi i browser ( Firefox / Google Chrome ):
Se il componente aggiuntivo corrente è basato su Add-on SDK o XUL
Quando l'estensione in fase di porting è basato su Add-on SDK
si deve guardare attraverso il tavolo di confronto per Add-on SDK
=> WebExtensions
, perché queste tecnologie hanno caratteristiche simili, ma differiscono per l'attuazione. Ogni sezione della tabella descrive l'equivalente di Add-on SDK
per WebExtension
.
Un approccio simile e per le estensioni XUL.
Confronto con le estensioni XUL / XPCOM