Firefox扩展包括main.js文件中的脚本

时间:2014-09-15 14:38:37

标签: javascript jquery firefox firefox-addon firefox-addon-sdk

我正在为firefox编写扩展程序,并且在main.js(背景)文件中包含脚本问题......

在我的情况下,我想包括例如jquery.js和config.js,但我看不出如何正确地做到这一点。

在我的chrome扩展程序中,我只是在清单文件上执行此操作,但我希望在Firefox中使用等效文件。

感谢您的帮助, jdmry

1 个答案:

答案 0 :(得分:2)

要导入使用Components.utils.import的文件。

您需要一个用于导入文件的URL。通常,这是资源://或chrome:// URL。

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

从您自己的扩展程序加载的一些示例:

Components.utils.import("chrome://myExtensionModule/content/common.jsm");          //Common
Components.utils.import("chrome://myExtensionModule/content/classes.jsm");         //Classes

要从您自己的扩展程序加载,您需要将文件放在chrome.manifest中已映射到chrome://或resource:// URL的文件夹中。例如,使用以下行:

content       myExtensionModule                             modules/

这不需要与您通常为内容映射的文件夹分开,但通常将JavaScript模块保存在单独的文件夹中,仅用于组织。你不需要让他们使用.jsm扩展,再次只是一个约定。使用.js就可以了,如果您有其他基于.js扩展名的自动配置工具(例如编辑器),则可能需要。

可以在MDN文档中找到更多信息:

请注意,在Firefox代码中,通常会有较短变量的映射来访问一些常用的Firefox属性。具体而言,经常使用以下内容:

const Cc = Components.classes;
const Ci = Components.interfaces;
const Cu = Components.utils;

通常这些是以更简化的方式定义的。它们在上面明确说明,以使映射更清晰。