Premiers pas avec firefox addon

Introduction

Suppléments :

Les modules complémentaires de Firefox sont généralement regroupés en extensions, puis en “autres types” de modules complémentaires Firefox.

Rallonges

Les extensions permettent de personnaliser Firefox en ajoutant ou en modifiant les fonctionnalités de Firefox. Certains des types de choses qui peuvent être faites avec les extensions incluent :

  • Modifiez l’apparence de sites Web spécifiques, leur contenu ou la manière dont ils interagissent.
  • Personnaliser l’interface utilisateur de Firefox
  • Ajouter des fonctionnalités supplémentaires à Firefox
  • Modifier le fonctionnement des fonctionnalités existantes de Firefox

Les extensions Firefox sont, principalement, écrites en JavaScript avec l’ajout de certaines API JavaScript.

Obsolescence et suppression de tous les types d’extensions autres que WebExtensions


Les modules complémentaires de Firefox, en particulier les extensions, sont actuellement en pleine mutation. Mozilla a annoncé et confirmé qu’ils ont déprécié tous les types d’extensions Firefox, à l’exception des WebExtensions, et que [toutes les extensions non basées sur WebExtensions seront désactivées dans Firefox 57, prévu pour le 14/11/2017][1].

Types d’extensions

Firefox propose quatre types d’extensions (qui sont toutes communément appelées modules complémentaires) :

  • [WebExtensions][2] : à l’avenir, les WebExtensions sont le seul type d’extension Firefox qui sera pris en charge. Ces add-ons sont décrits par un fichier [manifest.json][3]. Cette API est similaire à celle utilisée pour les extensions Google Chrome. Ces add-ons utilisent HTML et CSS en plus de Javascript. Alors que Mozilla a déclaré que cette API est l’avenir des extensions Firefox, cette API est toujours en développement. Pour l’instant, il est probablement préférable de développer et de tester votre module complémentaire WebExtension avec [Firefox Developer Edition][4] ou [Firefox Nightly][5]. Vous devez également noter attentivement la version de Firefox requise pour la fonctionnalité que vous souhaitez utiliser. Ces informations sont contenues dans la section “Compatibilité des navigateurs” des pages de documentation MDN.

WebExtensions utilise une API très différente des trois autres types d’extensions. Il n’y a, intentionnellement, aucune possibilité d’utiliser les interfaces fournies par l’un des autres types de modules complémentaires.

* [SDK complémentaire][6] : [obsolète ; suppression prévue] Ces modules complémentaires sont décrits par un fichier [package.json][7] qui est initialement généré en exécutant [jpm init][8]. Ces extensions utiliseront souvent require() pour charger des API [High-Level][9] ou [Low-Level][10] pour s’interfacer avec Firefox. Ces add-ons utilisent HTML et CSS en plus de Javascript. Actuellement, ces modules complémentaires sont intégrés dans une extension amorcée lorsqu’ils sont chargés pour être testés par jpm run ou consolidés dans un fichier .xpi par jpm xpi pour être distribués (c’est-à-dire téléchargés sur AMO/Mozilla). En d’autres termes, ce sont des extensions amorcées avec un wrapper SDK.

Mozilla semble s’être engagé à continuer à prendre en charge les extensions basées sur le SDK complémentaire tant que l’extension n’utilise pas require("chrome"), ou dépend autrement de [XUL][11], [XPCOM][12], et [XBL][13].

La plupart des choses qui peuvent être faites dans une extension bootstrap peuvent être faites dans une extension basée sur un SDK complémentaire. Cependant, beaucoup de ces choses contournent le SDK qui perd une partie importante des avantages de l’utilisation du SDK complémentaire.

  • [Bootstrapped][14] : [obsolète ; suppression prévue] Ces extensions sont également communément appelées “sans redémarrage” car elles étaient le premier type d’extension Mozilla qui ne nécessitait pas le redémarrage de l’application pour charger/décharger le module complémentaire. Cependant, sans redémarrage est un descripteur de leur fonctionnement. L’utilisation de “restartless” comme nom pour ce type de module complémentaire est déroutante car les modules complémentaires SDK et WebExtension ne nécessitent pas non plus que l’application soit redémarrée lors du chargement ou du déchargement du module complémentaire. Pour cette raison, il y a une tendance à ne plus utiliser “restartless” comme nom pour ce type d’add-on.

Ces add-ons utilisent HTML et CSS en plus de Javascript. Beaucoup interagissent également avec Firefox en utilisant [XUL][11].

Ces add-ons ont un fichier JavaScript appelé bootstrap.js qui doit contenir [points d’entrée (fonctions)][15] qui sont appelés pour les add-on startup(), shutdown(), install() et uninstall().

Ces modules complémentaires contiennent un fichier [install.rdf][16] qui décrit le module complémentaire. Ils contiennent généralement, mais pas toujours, un fichier [chrome.manifest][17] qui décrit comment les fichiers et répertoires de l’extension sont liés à l’application Mozilla (par exemple, Firefox).

La plupart, mais pas toutes, des choses qui peuvent être faites dans les extensions overlay/XUL/Legacy peuvent être accomplies dans des add-ons amorcés. Tout ce qui peut être fait dans le SDK complémentaire peut être fait dans une extension amorcée (les extensions SDK complémentaires sont des modules complémentaires amorcés avec certaines couches d’API basées sur JavaScript).

Mozilla a déclaré qu’[ils prévoyaient de déprécier] [18] “les modules complémentaires qui dépendent de [XUL] [11], [XPCOM] [12] et [XBL] [13]”. Bien que tous les modules complémentaires amorcés ne dépendent pas de ces technologies, les modules complémentaires amorcés ont tendance à fonctionner à un niveau inférieur à celui des modules complémentaires SDK et WebExtension. Ainsi, ils sont plus susceptibles d’utiliser ces technologies. Bien que certains disent que tous les modules complémentaires amorcés devraient être obsolètes, il n’est pas clair que ce soit le cas. Après tout, les extensions Add-on SDK ne sont pas obsolètes (sauf si elles utilisent require("chrome"), ou dépendent autrement de XUL, XPCOM ou XBL) et toutes les extensions Add-on SDK sont des extensions amorcées, juste avec un Enveloppe SDK.

* [Overlay/XUL/Legacy][19] : [obsolète ; dont la suppression est prévue] Ces add-ons contiennent un fichier [install.rdf][16] qui décrit l’add-on et un fichier [chrome.manifest][17] qui décrit comment les fichiers de l’add-on se rapportent (par exemple, superposition) aux fichiers de l’application. Le fonctionnement du module complémentaire avec l’application dépend entièrement des relations décrites dans le fichier chrome.manifest. Les seules exceptions à cela sont quelques éléments comme les icônes de l’extension et le fichier décrivant les options de l’extension qui sont indiquées dans le fichier install.rdf. Ces extensions interagissent avec l’application (par exemple Firefox) à un niveau très bas. Cela a tendance à les rendre plus susceptibles de se casser lorsque des modifications sont apportées à l’application.

Ces add-ons utilisent XUL, HTML et CSS en plus de Javascript. Certains utilisent également [XPCOM][12] et [XBL][13].

Toutes les extensions Overlay/XUL/Legacy sont prévues pour être obsolètes.

Autres types de modules complémentaires Firefox

Lorsque la plupart des gens pensent aux modules complémentaires de Firefox, ils pensent aux extensions décrites ci-dessus. Cependant, il existe d’autres types de modules complémentaires Firefox :

  • [Thèmes][20] [partiellement obsolète] permettent de personnaliser l’apparence de Firefox. Principalement en fournissant différentes règles CSS à toutes les parties du navigateur. [Les “thèmes complets” sont obsolètes][1] et [devraient être partiellement remplacés par une interface actuellement inexistante][21].
  • [Modules complémentaires mobiles] [22] sont pour Firefox pour Android. Actuellement, tous les types d’extension Firefox sans redémarrage sont pris en charge.
  • Les [plugins de moteur de recherche][23] sont utilisés pour ajouter des moteurs de recherche supplémentaires à la barre de recherche du navigateur.
  • [Dictionnaires utilisateur] [24] permettent d’utiliser la vérification orthographique dans d’autres langues.
  • Les [packs de langues][25] ajoutent des langues supplémentaires à l’interface utilisateur de Firefox.
  • [Plugins] [26] sont des bibliothèques partagées pour afficher le contenu que l’application elle-même ne peut pas afficher de manière native.

Cet “exemple” est principalement copié, avec quelques modifications, de [my, Makyen’s, answer on a stackoverflow question][27]. Certaines parties de ce contenu ont été copiées, ou du moins basées sur, la [page Add-on][28] sur le Mozilla Developer Network (MDN). Ceci a été initialement publié par [Makyen][29] dans la section “Remarques” du [tag firefox-addon][30]. Il a ensuite été modifié par [Ondřej Doněk] [31], qui a supprimé un supplément “pour”. Dans une seule modification effectuée par [nus][32], il a été déplacé de “Remarques” vers un “exemple” épinglé intitulé “Introduction”. Malheureusement, cela a entraîné la perte des informations d’attribution par le système.

[1] : https://blog.mozilla.org/addons/2017/02/16/the-road-to-firefox-57-compatibility-milestones/ [2] : https://developer.mozilla.org/en-US/Add-ons/WebExtensions [3] : https://developer.mozilla.org/en-US/Add-ons/WebExtensions/manifest.json [4] : https://www.mozilla.org/en-US/firefox/developer/ [5] : https://nightly.mozilla.org/ [6] : https://developer.mozilla.org/en-US/Add-ons/SDK [7] : https://developer.mozilla.org/en-US/Add-ons/SDK/Tools/package_json [8] : https://developer.mozilla.org/en-US/Add-ons/SDK/Tools/jpm#jpm_init [9] : https://developer.mozilla.org/en-US/Add-ons/SDK/High-Level_APIs [10] : https://developer.mozilla.org/en-US/Add-ons/SDK/Low-Level_APIs [11] : https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL [12] : https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM [13] : https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XBL [14] : https://developer.mozilla.org/en-US/Add-ons/Bootstrapped_extensions [15] : https://developer.mozilla.org/en-US/Add-ons/Bootstrapped_extensions#Bootstrap_entry_points [16] : https://developer.mozilla.org/en-US/Add-ons/Install_Manifests [17] : https://developer.mozilla.org/en-US/docs/Chrome_Registration [18] : https://blog.mozilla.org/addons/2015/08/21/the-future-of-developing-firefox-add-ons/comment-page-1/ [19] : https://developer.mozilla.org/en-US/Add-ons/Overlay_Extensions [20] : https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/Themes [21] : https://blog.mozilla.org/addons/2017/02/24/improving-themes-in-firefox/ [22] : https://developer.mozilla.org/en-US/Add-ons/Firefox_for_Android [23] : https://developer.mozilla.org/en-US/docs/Creating_OpenSearch_plugins_for_Firefox [24] : https://developer.mozilla.org/en-US/docs/Mozilla/Creating_a_spell_check_dictionary_add-on [25] : https://support.mozilla.org/kb/use-firefox-interface-other-languages-language-pack [26] : https://developer.mozilla.org/en-US/Add-ons/Plugins [27] : http://stackoverflow.com/a/38428921/3773011 [28] : https://developer.mozilla.org/en-US/Add-ons [29] : http://stackoverflow.com/users/3773011/makyen [30] : https://www.wikiod.com/fr/firefox-addon/premiers-pas-avec-firefox-addon [31] : http://stackoverflow.com/users/408828/ond%C5%99ej-don%C4%9Bk [32] : http://stackoverflow.com/users/1115652/nus

Installer un module complémentaire temporaire

Pour tester un module complémentaire que vous développez, vous souhaiterez probablement l’installer temporairement dans Firefox. Vous pouvez le faire en le chargeant en tant que [module complémentaire temporaire][1]. Faire cela:

  1. Accédez à [about:debugging][2]
  2. Cliquez sur “Charger le module complémentaire temporaire”
  3. Dans le sélecteur de fichiers, accédez au répertoire contenant les fichiers complémentaires
  4. Sélectionnez n’importe quel fichier dans le dossier
  5. Cliquez sur “Ouvrir”

L’animation suivante montre le chargement d’un module complémentaire nommé “aaaaaaaaaaaaaaaaaa - module complémentaire de démonstration” à partir de about:debugging et que le module complémentaire apparaît ensuite dans about:addons :

[![chargement d’un add-on temporaire][3]][3]

En tant que module complémentaire temporaire, vous pouvez charger soit un module complémentaire décompressé (un répertoire contenant tous les fichiers du module complémentaire que vous regrouperiez dans un fichier .xpi), soit un module complémentaire qui est compressé dans une archive .xpi. Les modules complémentaires temporaires n’ont pas besoin d’être [signé][4]. Le module complémentaire temporaire reste installé jusqu’à ce qu’il soit désinstallé manuellement ou que Firefox redémarre.

Documentation Mozilla : [Installation temporaire dans Firefox][1]

Extensions Web

Les extensions Web peuvent être chargées en tant que modules complémentaires temporaires. Cela peut être fait avec les fichiers complémentaires décompressés ou emballés dans un fichier .xpi.

SDK complémentaire Firefox

Vous ne pouvez pas charger une extension du SDK de module complémentaire Firefox en tant que module complémentaire temporaire sans d’abord l’empaqueter dans un fichier .xpi avec [jpm xpi][5]. En général, vous utiliserez [jpm run][6] pour tester votre extension SDK du module complémentaire Firefox.

Les fichiers qui sont généralement modifiés pour une extension SDK complémentaire ne constituent pas une extension complète sans quelques fonctions d’encapsulation supplémentaires et le fichier [package.json][7] étant traduit en un fichier [install.rdf][8 ] et éventuellement un fichier [chrome.manifest][9]. Ce processus encapsule l’extension SDK complémentaire dans un module complémentaire Bootstrap/Restartless, qui est compris par Firefox. Sans ce processus, Firefox ne pourra pas charger le module complémentaire. Ce processus est effectué par jpm xpi résultant en un fichier .xpi compressé. L’exécution de jpm run effectue également ce processus, mais stocke les fichiers résultants dans un emplacement temporaire et appelle Firefox avec le module complémentaire installé.

Boottrap/Restartless

Les modules complémentaires Bootstrap/Restartless peuvent être chargés en tant que modules complémentaires temporaires. Cela peut être fait avec les fichiers complémentaires décompressés ou emballés dans un fichier .xpi.

Hérité/Superposition/XUL

Les modules complémentaires Legacy/Overlay/XUL ne peuvent pas être chargés en tant que modules complémentaires temporaires.

[1] : https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Temporary_Installation_in_Firefox [2] : https://developer.mozilla.org/en-US/docs/Tools/about:debugging [3] : https://i.stack.imgur.com/96nIV.gif [4] : https://developer.mozilla.org/en-US/Add-ons/Distribution [5] : https://developer.mozilla.org/en-US/Add-ons/SDK/Tools/jpm#jpm_xpi [6] : https://developer.mozilla.org/en-US/Add-ons/SDK/Tools/jpm#jpm_run [7] : https://developer.mozilla.org/en-US/Add-ons/SDK/Tools/package_json [8] : https://developer.mozilla.org/en-US/Add-ons/Install_Manifests [9] : https://developer.mozilla.org/en-US/docs/Chrome_Registration

Installer des modules complémentaires non signés

Pour installer une extension en tant que module complémentaire normal dans les versions Release ou Beta de Firefox supérieures ou égales à la version 48, l’extension doit être [signée par Mozilla][1]. Une extension est signée en [la soumettant à l’AMO][2]. Une fois signée, l’extension peut être installée sur n’importe quelle version de Firefox qu’elle supporte. Pour les versions de Firefox antérieures à la version 43, les extensions n’étaient pas tenues d’être signées par Mozilla. [Les types de modules complémentaires autres que les extensions][3] n’ont pas besoin d’être signés par Mozilla.

Vous pouvez installer des extensions non signées en tant que modules complémentaires normaux dans d’autres versions de Firefox (par exemple Firefox Developer Edition, [Firefox Nightly](https: //nightly.mozilla.org/), Unbranded Beta ou Unbranded Release) en définissant xpinstall.signatures.required sur false dans about:config. La définition de cette option était également effective dans les versions Release et Beta de Firefox 43–48. La configuration de cette option n’est pas effective dans les versions Release et Beta de Firefox à partir de la version 48.

La nécessité de pouvoir installer des modules complémentaires non signés lors du développement de modules complémentaires a été considérablement réduite par la disponibilité de l’installation d’extensions en tant que [Modules complémentaires temporaires] [4]. Les modules complémentaires temporaires n’ont pas besoin d’être signés et peuvent être chargés dans n’importe quelle version actuelle de Firefox. Comme son nom l’indique, le principal inconvénient des modules complémentaires temporaires est qu’ils sont temporaires. Ils doivent être réinstallés à chaque redémarrage de Firefox. Cependant, il existe des cas d’utilisation où il est préférable d’installer un module complémentaire en tant que module complémentaire normal, mais non signé, plutôt qu’en tant que module complémentaire temporaire. Un module complémentaire doit être installé en tant que module complémentaire non signé s’il est nécessaire que le module complémentaire reste installé même après le redémarrage de Firefox. Cela peut être souhaitable pour diverses raisons, notamment : des tests d’utilisation à plus long terme ou pour tester le fonctionnement du module complémentaire au démarrage de Firefox.

[1] : https://developer.mozilla.org/en-US/Add-ons/Distribution [2] : https://addons.mozilla.org/developers/addon/submit/ [3] : https://www.wikiod.com/fr/firefox-addon/premiers-pas-avec-firefox-addon#Introduction [4] : https://www.wikiod.com/fr/firefox-addon/premiers-pas-avec-firefox-addon#Installation d’un module complémentaire temporaire

Installer des modules complémentaires pour le développement

Les modules complémentaires peuvent être installés en tant que :

  1. Modules complémentaires normaux, qui sont installés jusqu’à leur désinstallation
  2. Les modules complémentaires temporaires ([extensions][1] uniquement) : ne sont installés que jusqu’au redémarrage de Firefox ou peuvent être désinstallés manuellement plus tôt.
  3. Utilisation de [jpm run][2] ([Add-on SDK][3] uniquement) : exécute automatiquement Firefox à l’aide d’un profil temporaire avec votre module complémentaire chargé.
  4. Utilisation de [web-ext run][4] ([WebExtensions][5] uniquement) : exécute automatiquement Firefox à l’aide d’un profil temporaire avec votre module complémentaire chargé en tant que module complémentaire temporaire. Par défaut, surveille les modifications apportées à vos fichiers d’extension et recharge automatiquement votre extension lorsque les fichiers changent.

Compléments normaux

[L’installation d’extensions packagées] [6] (c’est-à-dire le fichier .xpi) peut être une simple question de le faire glisser et de le déposer sur une fenêtre Firefox exécutant le profil dans lequel vous souhaitez l’installer. Ils peuvent également être installés directement en téléchargeant l’extension depuis [AMO][7]. En fonction de votre objectif (un profil, tous les profils, tous les utilisateurs, quel système d’exploitation, etc.), il existe d’autres options pour [installer les extensions][6].

Ces autres options incluent divers répertoires en dehors du répertoire du profil dans lesquels vous pouvez placer le fichier .xpi pour qu’il soit installé pour tous les utilisateurs d’une version particulière de Firefox, ou tous les profils d’un utilisateur particulier. Sous Windows, vous pouvez également installer une extension en ajoutant une clé au registre Windows. En général, ces autres répertoires ne sont pas ceux dans lesquels vous installeriez un add-on sur lequel vous écrivez actuellement. Cependant, ils peuvent être utilisés pour vous assurer que vous disposez de modules complémentaires que vous utilisez pour prendre en charge vos tests/développement chargés dans n’importe quel profil Firefox ou version de Firefox que vous utilisez. Par exemple, en plaçant un fichier .xpi dans <Firefox install directory>/browser/extensions vous pouvez avoir une extension disponible même dans le profil temporaire créé par jpm run (utilisé pour tester Firefox Add-on SDK basé extensions).

Pour le [développement/test][8], vous pouvez placer l’extension dans n’importe quel répertoire de votre lecteur local en utilisant un [fichier proxy d’extension Firefox][9] (créez un fichier nommé <em:id> de l’extension (dans install.rdf pour Bootstrap/Restartless et Overlay/Legacy) dans le répertoire extensions du profil contenant une ligne avec le chemin complet vers le répertoire contenant les fichiers de l’extension). Les extensions installées de cette manière seront presque toujours non signées (voir ci-dessous). Ainsi, cette méthode n’est pas très utile si vous souhaitez installer l’extension dans une version Release ou Beta de Firefox.

Limitations sur l’installation de modules complémentaires normaux : Signature de module complémentaire


Pour installer une extension en tant que module complémentaire normal dans les versions Release ou Beta de Firefox supérieures ou égales à la version 48, l’extension doit être [signée par Mozilla][2]. Une extension est signée en [la soumettant à l’AMO][4]. Une fois signée, l’extension peut être installée sur n’importe quelle version de Firefox qu’elle supporte. Pour les versions de Firefox antérieures à la version 43, les extensions n’étaient pas tenues d’être signées par Mozilla. [Les types de modules complémentaires autres que les extensions][1] n’ont pas besoin d’être signés par Mozilla.

Vous pouvez installer des extensions non signées en tant que modules complémentaires normaux dans d’autres versions de Firefox (par exemple Firefox Developer Edition, [Firefox Nightly](https: //nightly.mozilla.org/), Unbranded Beta ou Unbranded Release) en définissant xpinstall.signatures.required sur false dans about:config. La définition de cette option était également effective dans les versions Release et Beta de Firefox 43–48. La configuration de cette option n’est pas effective dans les versions Release et Beta de Firefox à partir de la version 48.

Cependant, vous pouvez désactiver complètement la vérification des signatures complémentaires dans Firefox sur toutes les versions, y compris la version. La réponse à la question Stack Overflow [Comment puis-je désactiver la vérification des signatures pour les modules complémentaires de Firefox ?] [10] décrit comment procéder.

La nécessité de pouvoir installer des modules complémentaires non signés à des fins de développement a été considérablement réduite par la disponibilité de l’installation d’extensions en tant que [Modules complémentaires temporaires] [11]. Les modules complémentaires temporaires n’ont pas besoin d’être signés et peuvent être chargés dans n’importe quelle version actuelle de Firefox. Comme son nom l’indique, le principal inconvénient des modules complémentaires temporaires est qu’ils sont temporaires. Ils doivent être réinstallés à chaque redémarrage de Firefox. Cependant, il existe des cas d’utilisation où il est préférable d’installer un module complémentaire en tant que module complémentaire normal, mais non signé, plutôt qu’en tant que module complémentaire temporaire. Un module complémentaire doit être installé en tant que module complémentaire non signé s’il est nécessaire que le module complémentaire reste installé même après le redémarrage de Firefox. Cela peut être souhaitable pour diverses raisons, notamment : des tests d’utilisation à plus long terme ou pour tester le fonctionnement du module complémentaire au démarrage de Firefox.

Modules complémentaires temporaires ([extensions uniquement][1])

Les extensions WebExtensions, les extensions basées sur le SDK de module complémentaire Firefox et les extensions Restartless/Bootstrap peuvent être installées en tant que [Modules complémentaires temporaires][12] à partir de about:debugging. Les extensions peuvent être chargées en tant que modules complémentaires temporaires dans n’importe quelle version actuelle de Firefox. Les modules complémentaires temporaires n’ont pas besoin d’être signés et peuvent être chargés soit décompressés (un répertoire contenant des fichiers), soit compressés (par exemple, un fichier .xpi).

Pour des informations détaillées sur l’installation temporaire des extensions, voir [Installation d’un module complémentaire temporaire] [11].

[1] : https://www.wikiod.com/fr/firefox-addon/premiers-pas-avec-firefox-addon#Introduction [2] : https://developer.mozilla.org/en-US/Add-ons/SDK/Tools/jpm [3] : https://developer.mozilla.org/en-US/Add-ons/SDK [4] : https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Getting_started_with_web-ext [5] : https://developer.mozilla.org/en-US/Add-ons/WebExtensions [6] : https://developer.mozilla.org/en-US/Add-ons/Installing_extensions [7] : https://addons.mozilla.org/en-US/firefox/ [8] : http://Setting%20up%20an%20extension%20development%20environment [9] : https://developer.mozilla.org/en-US/Add-ons/Setting_up_extension_development_environment#Firefox_extension_proxy_file [10] : http://stackoverflow.com/a/42403531/3773011 [11] : https://www.wikiod.com/fr/firefox-addon/premiers-pas-avec-firefox-addon#Installation d’un module complémentaire temporaire [12] : https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Temporary_Installation_in_Firefox