Firefox port.emit和port.on无法在扩展中工作

时间:2014-01-01 12:51:19

标签: java javascript firefox-addon firefox-addon-sdk

我正在尝试进行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)。我做错了什么?

1 个答案:

答案 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"});
    })

  }
});