面板&在Firefox扩展中传递的PageMod内容脚本消息
Panel & PageMod Content Script message passing in a Firefox extension
我正在使用Firefox插件SDK将Chrome扩展移植到Firefox。
该扩展由一个连接到工具栏按钮的面板(相当于Chrome的popup.html+浏览器操作)和一个PageMod内容脚本组成。
当面板打开时,它需要向当前选项卡的内容脚本发送一条消息,以接收来自该页面的包含某些信息的对象。我遇到的问题是如何实际传递消息。有人能帮我指明正确的方向吗?我似乎找不到很多资源来帮助Chrome扩展开发人员学习Firefox插件的开发。
下面的问题在Chrome环境中演示了这个概念。我只需要帮助将它移植到Firefox
Chrome扩展-消息从弹出窗口传递到内容脚本
插件SDK有点复杂,因为你不与那里的选项卡通信,而是与你创建的工作人员通信。这个系统不会跟踪工人,你必须自己做。像这样的东西应该可以工作(未经测试的代码):
var workers = [];
var pageMod = require("page-mod");
pageMod.PageMod({
include: ...,
contentScriptFile: ...,
onAttach: function(worker)
{
workers.push(worker);
worker.on("detach", function()
{
var index = workers.indexOf(worker);
if (index >= 0)
workers.splice(index, 1);
});
}
});
这样可以确保workers
变量包含活动工作者的列表(Worker
对象文档)。因此,当你需要向分配给特定选项卡的工作人员发送消息时,你可以这样做:
var tabs = require('tabs');
for (var i = 0; i < workers.length; i++)
if (workers[i].tab == tabs.activeTab)
worker.postMessage(...);
当然,您只能从扩展本身执行此操作,而不能从加载到面板或类似内容的内容脚本执行此操作。如果你在一个内容脚本中,你首先必须向扩展发送一条消息,然后它应该将消息转发给选项卡中的工作者。
相关文章:
- Ajax聊天消息重复而不仅仅是更新
- 如果localstorage为空,则显示欢迎消息
- 绑定时将Parsley minlength消息作为选项传递时,未对其进行自定义
- 离开页面时弹出消息
- 有没有一种方法可以在控制台关闭的情况下让console.log()在IE中记录消息
- 消息显示之外的淘汰验证
- 选项卡侦听器未被来自后台脚本的消息激活
- pageMod没有'似乎不起作用
- jQuery在输入下验证post错误消息
- Scipt未在选定选项卡中执行以发送和接收消息
- 检查xmlhttprequest问题的消息
- AngularJs对ng消息的自定义替换
- ng消息仅在触摸时显示错误,并在错误的初始显示上转换
- 当用户按下回车键时,自动在text区域/text中插入消息
- 如果消息框答案为YES,则用Javascript填写表单
- 在javaservlet doPost方法中启动线程时,无法返回异常消息
- 解析云代码错误:解析.错误{代码:141,消息:“未调用成功/错误”}
- Node.js上的WebSocket,并在所有连接的客户端之间共享消息
- 在AngularJs中隐藏默认错误消息
- 面板&在Firefox扩展中传递的PageMod内容脚本消息