Javascript 在加载项SDK主加载项脚本和SDK/页面工作程序脚本之间进行通信

Javascript 在加载项SDK主加载项脚本和SDK/页面工作程序脚本之间进行通信,javascript,firefox-addon,firefox-addon-sdk,Javascript,Firefox Addon,Firefox Addon Sdk,我正在尝试在我的主附加SDK脚本index.js和使用SDK/page worker创建的页面工作程序中的脚本之间进行通信。不幸的是,我有问题 我能够从我的主脚本与页面工作程序通信:在下面的代码中,我从socket.on-console.log('new post')从页面工作程序中的脚本触发一个事件。但是,主加载项脚本看不到从页面工作程序发送的消息 HTML(worker.HTML): var socket=io.connect('http://192.168.0.21:8081'); so

我正在尝试在我的主附加SDK脚本index.js和使用
SDK/page worker
创建的页面工作程序中的脚本之间进行通信。不幸的是,我有问题

我能够从我的主脚本与页面工作程序通信:在下面的代码中,我从
socket.on
-
console.log('new post')
从页面工作程序中的脚本触发一个事件。但是,主加载项脚本看不到从页面工作程序发送的消息

HTML(worker.HTML):


var socket=io.connect('http://192.168.0.21:8081');
socket.on('newPost',函数(数据){
控制台日志(“新邮件”);
//对此,一切都正常!!!!!!!!!!!!
self.port.emit('newPost',“”);
});
要索引.js文件,请执行以下操作:

var buttons=require('sdk/ui/button/action');
var functions=require('./module.js');
var pageWorkers=require(“sdk/页面工作者”);
var notifications=require('sdk/通知');
var self=要求(“sdk/self”);
functions.act.checkMsgsCount();
var pageWorker=pageWorkers.Page({
contentScriptWhen:“就绪”,
contentURL:self.data.url(“worker.html”)
});
pageWorker.port.on('newPost',函数(数据){
console.log(“sent newPost”);
functions.act.newPostNotify();
});
按钮({
id:“主bt”,
标签:“开始”,
图标:{
“16”:“/icon-16.png”,
“32”:“/icon-32.png”,
“64”:“/icon-64.png”
},    
onClick:functions.act.checkMsgsCount
});
在worker.html中,我必须将self.port.emit更改为:
addon.port.emit

因为我在HTML文件中的
标记中使用了一个脚本,所以我必须通过
加载项
对象与主加载项脚本通信


也许您的消息是在您侦听之前发送的?@Aurélien如何将其更改为在消息发送后侦听?也许可以延迟一点内联脚本执行(“准备就绪”)。。。但在执行此操作之前,能否在pageWorker.port.on之后测试控制台日志,以查看它是否在“new post”日志之前触发?@Aurélien但我已多次尝试发送此消息,但在浏览器控制台窗口(在
Tools>Web development
菜单中)中没有任何错误/警告与内联脚本相关?鉴于这是您解决问题的方式,请接受您的答案。