我正在为 Firefox 4+ 编写一个扩展。
我在名为的文件中有一些代码utils.js
我想从两个插件中调用它main.js
并从page-mod
的内容脚本。
是否可以从两者引用同一个utils.js
?如果是这样,怎么办?
编辑:更好的解决方案是允许我在 Google Chrome 扩展中使用相同的代码。
我遇到了同样的问题。您可能会认为有一个明显的解决方案。这是我为 Firefox 所做的事情(没有使用 Chrome):
我有一个文件 lib/dbg.js ,其中包含我想在任何地方使用的基本调试函数。
在我的 main.js 中的每个内容可编写脚本的模块中,我有以下内容:
contextMenu.Item({
...
contentScript: export_internals(require('dbg')),
contentScriptFile: my-actual-scripts.js
...
然后在 main 中我有一个函数
function export_internals(module) {
var code = '';
for (name in module) {
var val = module[name];
if (val.constructor === String)
code += name + ' = "' + val + '";';
else
code += val;
}
return code;
}
它基本上只是循环导出的属性(变量、函数等),并利用 Function.toString() 之类的东西来基本上构建 dbg 模块的字符串化版本,并将其作为内联内容脚本传递。这个函数可能不是很通用,因为我只是编写它来处理简单的函数和字符串(我需要的唯一两种数据类型),但即使您只是做类似的事情,原则也应该很容易应用
contentScript: require('dbg').my_function.toString()
这显然有点黑客行为,但到目前为止还是相当可靠的。这就是您要找的吗?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)