google-chrome-extension - 如何在内容脚本和插件之间共享代码?

标签 google-chrome-extension firefox-addon firefox-addon-sdk

我正在为 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
...

然后主要我有一个功能
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()

显然,这有点像 hack,但到目前为止还是相当可靠的。那是你要找的吗?

关于google-chrome-extension - 如何在内容脚本和插件之间共享代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6425831/

相关文章:

javascript - 用于 Retina 显示屏的 Chrome 扩展屏幕截图部分图像裁剪

javascript - 从 Chrome 扩展中 Hook Websocket

javascript - Firefox JavaScript chrome 代码中的弱引用

Firefox 插件需要额外刷新才能工作

firefox-addon-sdk - 在用户分支中设置首选项并在卸载时取消设置

javascript - Firefox addon sdk同步请求

javascript - onBeforeRequest 未触发 : expected 'object' but got 'array'

javascript - First Addon 帮助 - 使用 for 循环在窗口中循环

firefox - YQL 可以在 Firefox Add-on Builder 中使用吗?

javascript - Chrome 扩展 : Append functions to right click menu