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

2024-02-09

我正在为 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(使用前将#替换为@)

如何在内容脚本和插件之间共享代码? 的相关文章

随机推荐

  • 检查类上是否定义了方法

    如何检查方法是否直接在某个类上定义 而不是通过继承或包含 扩展定义 我想要类似 foo 的东西 在下面的 class A def a end end module B def b end end class C lt A include B
  • 设置 os.Mkdir 权限

    我正在尝试使用 os Mkdir 创建具有某些权限的目录 但由于某种原因我无法使其工作 我的测试程序是 package main import log os func main err os Mkdir testdir 0775 if er
  • 同时运行 React 和 Node。

    我有一个我认为不太独特的用例 但我遇到了挑战 我的应用程序是用express EJS编写的 在端口35上运行 我想包括react 所以我正在遵循教程 并在我现有的应用程序中编写这个应用程序 并在另一个端口上运行 当两个应用程序位于不同端口时
  • c++filt 源代码在哪里?

    有谁知道 c filt 源代码的链接 我想在我的代码中将 c filt 作为库调用 在 Linux 上你可以使用 usr include demangle h附带binutils dev包裹 您必须链接到libiberty from bin
  • Ansible 检查字典列表中是否存在键/值对

    我试图检查 Ansible 的字典列表中是否存在某个键 值对 我发现了这个问题 但是我不确定Python和ansible的语法是否不同 我从未在ansible中见过if语句 检查字典列表中是否已存在值 https stackoverflow
  • 读取和写入 NSMutableDictionary 到 plist 文件

    我正在努力拯救NSMutableDictionary in applicationDidEnterBackground of AppDelegate m一个到一个plist文件 保存后 我立即尝试检查该文件是否存在并读回 但找不到该文件 N
  • git request-pull:如何在命令行上创建(github)拉取请求?

    我克隆了一个项目 并将一个仅包含重命名的自述文件的分支推送到自述文件中 我正在尝试在命令行上创建拉取请求 只是为了从这里尝试 PR 而不是网站 git request pull origin master origin readme rea
  • 在 Ruby 中将 12 小时时间转换为 24 小时格式

    如何将 11am 和 10pm 转换为 11 00 和 22 00 有没有一种使用日期和时间类的简单方法 我首先会解析字符串Time strptime然后输出它Time strftime 这也确保了对您的原始格式的严格检查 require
  • python 绘制填充颜色的饼图

    我正在尝试绘制一个填充颜色的饼形 我尝试以不同的方式做到这一点 这是代码 ball pygame draw circle self screen self pink self pos self r 0 pygame gfxdraw pie
  • Hexdump反向命令

    The hexdump https www man7 org linux man pages man1 hexdump 1 html命令将任何文件转换为十六进制值 但是 如果我有十六进制值并且我想反转该过程 这可能吗 有一个类似的工具叫做x
  • Json <-> 与 GWT 一起使用的 Java 序列化 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Delphi 中的dynamic_cast 相当于什么?

    在Delphi中 相当于C 的什么dynamic cast reinterpret cast and static cast运算符 尤其是在对象上使用时 重新解释 cast 大多数时候 在 Delphi 中 演员表是reinterpret
  • 如何让 Eclipse 显示类的整个 javadoc

    eclipse可以显示整个javadoc吗 即 当我突出显示对象引用时 所有方法 及其描述 例如 如果我做系统 它会向我显示 java lang System System 类包含几个有用的类字段和方法 它 无法实例化 System 类提供
  • git 可以用于非文本文档(例如 word doc 或 xls 等)的版本控制吗

    我最近一直在学习 GIT 版本控制系统 它似乎对于纯文本文档非常有效 因为您可以添加一行 返回并分叉它 修改文档并删除刚刚添加的行 我主要用 Excel 编程并用 Word 编写文档 GIT 可以用来管理这些文件的版本 显然不是文件内部的内
  • Angular 7+ 上的动态导入

    我正在尝试构建包含一些具有动态导入的组件的项目 例如 import Directive Input ElementRef from angular core Directive selector saKnob export class Kn
  • 字寻址和字节寻址之间的区别

    有人可以解释一下有什么区别吗Word and Byte可寻址 它与内存大小等有何关系 A byte is a 记忆单元 https en wikiversity org wiki Memory Unit for storage A 存储芯片
  • 添加到观看与添加到快速观看

    添加到观看和添加到快速观看之间有什么区别吗 添加到监视 将变量添加到监视窗口 以便您可以在单步执行代码时看到其值的变化 QuickWatch 会弹出一个短暂的对话框 显示该值 而不会在任何地方永久添加它 当您关闭该对话框时 您将无法再看到该
  • 如何使用 PAT 和命令行 git 或 sourcetree 克隆 azure dev ops git 存储库?

    好的 我们的组织在 azure devops 存储库中拥有代码 我一直在尝试通过 Mac 上的 git 命令行 Mac 上的 SourceTree 和 Windows 上的 SourceTree 来克隆它 但没有成功 我在 azure gi
  • 在大写字母前插入空格的Pythonic方法

    我有一个文件 我正在通过 python 脚本更改其格式 我在这个文件中有几个驼峰式字符串 我只想在大写字母之前插入一个空格 所以 WordWordWord 变成 Word Word Word 我有限的正则表达式经验对我来说已经停滞了 有人能
  • 如何在内容脚本和插件之间共享代码?

    我正在为 Firefox 4 编写一个扩展 我在名为的文件中有一些代码utils js我想从两个插件中调用它main js并从page mod的内容脚本 是否可以从两者引用同一个utils js 如果是这样 怎么办 编辑 更好的解决方案是允