Recherche…


Remarques

Si vous utilisez une version de Firefox antérieure à 48, vous aurez également besoin d'une clé supplémentaire dans manifest.json appelée applications:

"applications": {
  "gecko": {
    "id": "[email protected]",
    "strict_min_version": "42.0",
    "strict_max_version": "50.*",
    "update_url": "https://example.com/updates.json"
  }
}

applications


Remarque:

Signature d'extension :

Avec la sortie de Firefox 48, la signature de l'extension ne peut plus être désactivée dans les versions de la version et du canal bêta en utilisant une préférence. Comme indiqué lors de l'annonce de la signature de l'extension, nous publions des versions spécialisées qui prennent en charge cette préférence afin que les développeurs puissent continuer à tester le code généré par les versions bêta et par publication.

Statut de WebExtensions :

WebExtensions sont actuellement dans un état alpha expérimental. À partir de Firefox 46, vous pouvez publier WebExtensions sur les utilisateurs de Firefox, comme tout autre module complémentaire. Nous visons une première version stable dans Firefox 48.

UPD : Firefox 48 publié le 02.08.2016.


Liens:

État de la prise en charge de l'API - Liste des API et leur statut.

Incompatibilités Chrome

WebExtensions - API JavaScript, clés de manifest.json, didacticiels, etc.

Portage via WebExtensions

Avant de parler du portage des extensions Firefox depuis / vers, il faut savoir ce que sont les WebExtensions .

WebExtensions - est une plate-forme qui représente une API pour créer des extensions Firefox .

Il utilise la même architecture d'extension que Chromium . Par conséquent, cette API est compatible à bien des égards avec l'API de Google Chrome et Opera (Opera basé sur Chrome). Dans de nombreux cas, les extensions développées pour ces navigateurs fonctionneront dans Firefox avec quelques modifications ou même sans elles.

MDN recommande d'utiliser WebExtension pour les nouvelles extensions:

À l'avenir, WebExtensions sera la méthode recommandée pour développer des modules complémentaires pour Firefox, et les autres systèmes seront obsolètes.

Compte tenu de ce qui précède, si vous souhaitez porter des extensions sur Firefox , vous devez savoir comment l’extension a été écrite.

Les extensions pour Firefox peuvent être basées sur WebExtension , Add-on SDK ou XUL .


Extensions compatibles basées sur WebExtension

Lorsque vous utilisez WebExtension , vous WebExtension parcourir la liste des incompatibilités , car certaines fonctions sont prises en charge totalement ou partiellement, c'est-à-dire que vous WebExtension manifest.json .

Il permet également d'utiliser le même espace de noms :

À l'heure actuelle, toutes les API sont accessibles via l'espace de noms chrome. *. Lorsque nous commençons à ajouter nos propres API, nous nous attendons à les ajouter au navigateur. * Namespace. Les développeurs pourront utiliser la détection des fonctionnalités pour déterminer si une API est disponible dans le navigateur. *.

Une extension simple qui peut fonctionner dans Firefox et 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/*"]
}

script de 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);

Projet pack en fichier zip standard, mais avec les extensions .xpi .

Projet pack

Ensuite, vous devez charger l'extension dans Firefox .

Ouvrez la page about:addons , accessible via Menu> Add-ons .

Cliquez sur le bouton Outils pour tous les modules complémentaires .

Installer l'extension

Lorsque l'extension est chargée, la page à about:addons ressemblera à ceci:

Résultat de l'installation

Les instructions sur le chargement de l'extension dans Google Chrome se trouvent dans une autre rubrique - Prise en main de Chrome Extensions .

Le résultat de l'opération d'extension sera le même dans les deux navigateurs ( Firefox / Google Chrome ):

Résultat du travail


Si l'add-on actuel est basé sur le SDK complémentaire ou XUL

Lorsque l'extension en cours de portage est basée sur un Add-on SDK WebExtensions , il est WebExtensions parcourir le tableau de comparaison des Add-on SDK WebExtensions => WebExtensions , car ces technologies présentent des fonctionnalités similaires, mais leur implémentation est différente. Chaque section du tableau décrit l’équivalent du Add-on SDK WebExtension pour WebExtension .

Comparaison avec le SDK complémentaire

Une approche similaire et pour les extensions XUL.

Comparaison avec les extensions XUL / XPCOM



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow