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"
  }
}

toepassingen


Notitie:

Extensie ondertekening :

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.

Chrome-onverenigbaarheden

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.

Project inpakken

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.

Extensie installeren

Wanneer de extensie is geladen, ziet de pagina about:addons er als volgt uit:

Resultaat van installatie

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 ):

Resultaat van het werk


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



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow