我需要在 FireFox 插件的 main.js 中导入/包含一个 javascript 文件,但由于 main.js 不包含“文档”,我无法以正常/简单的方式插入它。
我尝试过一些东西,但从未成功。
这就是我真正想要实现的目标: 我使用外部时区检测脚本(https://bitbucket.org/pellepim/jstimezonedetect/overview)。我需要确定 main.js 中的时区来下载 Google 日历文件 + 将时间转换为用户时区。这是以后不能做的!到目前为止,我只是手动将代码插入到文件中(复制+粘贴),但这不是一个非常好的和清晰的方法。
您需要创建一个 CommonJS 模块。将 .js 文件添加到插件的 lib 文件夹中,并通过“exports”指令导出您需要的所有函数。完成此操作后,您可以通过“require”指令使用导出的函数。
例如,在您将重用的模块中,您可以输入:
// REUSABLE MODULE
exports.somefunction = somefunction;
function somefunction() {
doSomething();
}
然后在将使用这个的模块中:
var othermodule = require("reusable_module");
othermodule.somefunction();
以下是相关文档:https://addons.mozilla.org/en-US/developers/docs/sdk/latest/dev-guide/guides/modules.html
2020年更新:
我自己也遇到过,并且要求似乎不起作用 这似乎确实有效:(ES6 风格导入)
在清单内将“脚本”替换为“页面”,如下所示 -
"background": {
"page": "background.html"
}
创建background.html文件并添加
<script type="module" src='./background.js'></script>
现在在你的 js 文件中,你可以使用 ES6 导入来使用其他文件
import * as [name] from "[location]"
将该文件包含在manifest.json文件中
"web_accessible_resources":["papaparse.js"]
然后获取并评估它
eval(await (await fetch(browser.runtime.getURL("papaparse.js"))).text());
console.log("Papa", Papa);