Javascript 如何从内容脚本1到内容脚本2的附加脚本获取数据?

Javascript 如何从内容脚本1到内容脚本2的附加脚本获取数据?,javascript,firefox-addon,firefox-addon-sdk,Javascript,Firefox Addon,Firefox Addon Sdk,恐怕我还没有弄清楚脚本之间通过端口的通信是如何工作的。 在panel.js中我监听面板中要按下的提交按钮。我将值保存在数组vals中,并通过以下方式传递: self.port.emit("submitted", vals); 使用以下内容收听main.js: panel.port.on("submitted", function(vals) { ... }); 现在我想将vals发送到另一个内容脚本('page.js'),该脚本将使用这些数据来操作站点的DOM 在main.js上,我尝试了:

恐怕我还没有弄清楚脚本之间通过
端口
的通信是如何工作的。 在
panel.js中
我监听面板中要按下的提交按钮。我将值保存在数组
vals
中,并通过以下方式传递:

self.port.emit("submitted", vals);
使用以下内容收听
main.js

panel.port.on("submitted", function(vals) { ... });
现在我想将
vals
发送到另一个内容脚本('page.js'),该脚本将使用这些数据来操作站点的DOM

在main.js上,我尝试了:

require("page-mod").PageMod({
    include: "*",
    contentScriptWhen: 'end',
    contentScriptFile: data.url("page.js"),
    onAttach: function(worker) {
        panel.on('submitted', function(vals) {
            worker.port.emit('output', vals);
        });
    }
});

一般来说,您正在尝试的操作看起来是可行的—只是您可能希望将
panel.on
替换为
panel.port.on
。然而,员工可以来来往往,你不想尝试与不再在那里的员工沟通。有一个很好的示例,可以跟踪活动的工作人员,可以根据您的目的对其进行轻微调整:

var-workers=[];
var pageMod=require(“页面修改”).pageMod({
包括:“*”,
contentScriptWhen:'结束',
contentScriptFile:data.url('page.js'),
onAttach:功能(工作程序){
//将新工作人员添加到列表中
工人。推(工人);
worker.on('detach',函数(){
//从列表中删除不再活动的工作进程
var指数=工人。indexOf(工人);
如果(索引>=0)
工人.拼接(索引1);
});
}
});
面板端口打开(“已提交”,功能(VAL){
对于(变量i=0;i
一般来说,您正在尝试的方法看起来是可行的-只是您可能希望将
面板.on
替换为
面板.port.on
。然而,员工可以来来往往,你不想尝试与不再在那里的员工沟通。有一个很好的示例,可以跟踪活动的工作人员,可以根据您的目的对其进行轻微调整:

var-workers=[];
var pageMod=require(“页面修改”).pageMod({
包括:“*”,
contentScriptWhen:'结束',
contentScriptFile:data.url('page.js'),
onAttach:功能(工作程序){
//将新工作人员添加到列表中
工人。推(工人);
worker.on('detach',函数(){
//从列表中删除不再活动的工作进程
var指数=工人。indexOf(工人);
如果(索引>=0)
工人.拼接(索引1);
});
}
});
面板端口打开(“已提交”,功能(VAL){
对于(变量i=0;i