我正在尝试进行firefox扩展。我需要与后台脚本(main.js)交换数据,所以我尝试使用端口,但它不起作用。
//Content.js
self.port.on("alert",function(){alert()});//Listen to message
self.port.emit("message",{message:"Hello"});
在main.js中,这是我添加工作者的方式。所以基本上,当内容脚本发送“消息”时,后台脚本发送“警报”并且内容脚本发出警报。那不会发生
//main.js
pageMod.PageMod({
include: ["https://play.google.com/*"],
contentScriptWhen: 'ready',
contentScriptFile: [data.url("jquery.js"),data.url("jquery.knob.js"),data.url("purl.js"),data.url("content.js")],
contentScriptOptions: {
inUrl: data.url("in.png"),
outUrl: data.url("out.png"),
logoUrl: data.url("logoimage.png")
},
contentStyleFile: [data.url("css/inject.css")],
onAttach: function(worker) {//Ttach
alert("hello there")
worker.on("message",function(){
worker.emit("alert",{message:"Hello"});
})
}
});
根本没有任何事情发生。我无法知道是否发送了第一条消息(cotnent script to extension)。我做错了什么?
答案 0 :(得分:1)
代码应该是worker.port.emit和worker.port.on而不是worker.on和worker.emit
pageMod.PageMod({
include: ["https://play.google.com/*"],
contentScriptWhen: 'ready',
contentScriptFile: [data.url("jquery.js"),data.url("jquery.knob.js"),data.url("purl.js"),data.url("content.js")],
contentScriptOptions: {
inUrl: data.url("in.png"),
outUrl: data.url("out.png"),
logoUrl: data.url("logoimage.png")
},
contentStyleFile: [data.url("css/inject.css")],
onAttach: function(worker) {//Ttach
alert("hello there")
worker.port.on("message",function(){
//THIS IS THE CORRECT CODE
worker.port.emit("alert",{message:"Hello"});
})
}
});