J’écris une extension pour Firefox et j’ai un problème avec les scripts dans le fichier main.js (background) …
Dans mon cas, j’aimerais inclure par exemple jquery.js et config.js mais je ne vois pas comment le faire correctement.
Dans mon extension chrome, je ne fais que cela sur le fichier manifeste, mais je voudrais l’équivalent dans Firefox.
Merci pour votre aide, jdmry
Pour importer des fichiers, utilisez Components.utils.import .
Vous aurez besoin d’une URL à partir de laquelle importer le fichier. En règle générale, il s’agit d’une URL ressource: // ou chrome: //.
Quelques exemples de bibliothèques fournies par Mozilla:
Components.utils.import("resource://gre/modules/FileUtils.jsm"); //File Utilities Components.utils.import("resource://gre/modules/NetUtil.jsm"); //Network utilities Components.utils.import("resource://gre/modules/Services.jsm"); //Services
Quelques exemples de chargement depuis votre propre extension:
Components.utils.import("chrome://myExtensionModule/content/common.jsm"); //Common Components.utils.import("chrome://myExtensionModule/content/classes.jsm"); //Classes
Pour pouvoir charger à partir de votre propre extension, vous devez avoir les fichiers d’un dossier mappé sur une URL chrome: // ou resource: // dans votre chrome.manifest. Par exemple avec la ligne:
content myExtensionModule modules/
Cela n’a pas besoin d’être séparé du dossier que vous mappez normalement pour le contenu, mais il est courant de conserver les modules JavaScript dans un dossier séparé, juste pour l’organisation. Vous n’avez pas besoin qu’ils utilisent une extension .jsm, encore une fois une convention. Utiliser .js est très bien et peut être souhaitable si vous avez d’autres outils de configuration automatique basés sur une extension .js (par exemple un éditeur).
Vous trouverez beaucoup plus d’informations dans la documentation sur MDN:
Notez que dans le code Firefox, il est courant de créer un mappage sur des variables plus courtes pour accéder à certaines propriétés de Firefox couramment utilisées. Plus précisément, les éléments suivants sont souvent utilisés:
const Cc = Components.classes; const Ci = Components.interfaces; const Cu = Components.utils;
Celles-ci sont généralement définies de manière beaucoup plus abrégée. Ils sont explicitement indiqués ci-dessus pour rendre la cartographie plus claire.