Mik*_*der 5 javascript firefox firefox-addon firefox-addon-sdk
我正在使用Firefox Add-on 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);
});
}
});
Run Code Online (Sandbox Code Playgroud)
这可确保workers变量包含活动工作者列表(Worker对象文档).因此,当您需要向分配给特定选项卡的工作人员发送消息时,请执行以下操作:
var tabs = require('tabs');
for (var i = 0; i < workers.length; i++)
if (workers[i].tab == tabs.activeTab)
worker.postMessage(...);
Run Code Online (Sandbox Code Playgroud)
当然,您只能从扩展本身执行此操作,而不能从加载到面板中的内容脚本或类似内容执行此操作.如果您在内容脚本中,则首先必须向扩展程序发送消息,然后它应该将消息转发给选项卡中的工作程序.
| 归档时间: |
|
| 查看次数: |
1799 次 |
| 最近记录: |