Firefox SDK信息来自不同的内容和主要内容

时间:2014-06-02 11:55:44

标签: javascript firefox-addon firefox-addon-sdk message-passing

希望我的问题尚未得到解答,因为有很多相关的Q& As 首先,这是我的附加结构:

addon/  
 data/  
  contentScript1.js  
 lib/  
  lib1.js  
 main.js  

由于箭头在markdown中不起作用,我将用文字描述:加载项是根,然后是两个文件夹:datalib以及一个文件:main.jsdata内的contentScript1.jsliblib1.jscontentScript1.js

首先,我想通过port.onport.emit//Part in main.js: var emitTest = "test"; pageMod.PageMod({ include: "*", contentScriptFile: [self.data.url("contentScript1.js")], onAttach: function(worker) { worker.port.on("clicked", function (data) { if(data == "clickBox1"){ console.log(data); //this works pageMod.PageMod({ include: "*", contentScriptFile: [self.data.url("lib1.js")], onAttach: function(worker2) { worker2.port.emit("script2Test", "test"); worker2.port.emit("varTest", emitTest); worker2.port.on("gotBack", function (data2) { console.log(data2); //doesnt log }); } }); } }); } }); //Part in lib1.js: self.port.on("script2Test", function(data) { self.port.on("varTest", function(data2) { self.port.emit("gotBack", functionInLib1(data, data2)); }); }); 收到消息:

contentScript1.js

我跳过了contentScript1的部分,因为在这两个部分之间传递的消息(mainconsole.log)工作正常。

我现在的问题是:为什么标记port.on无效?我真的试图通过port.emit和{{1}} ...

来传递消息

1 个答案:

答案 0 :(得分:2)

好像你把lib1.js放在lib文件夹而不是数据文件夹中。因为你正在使用

contentScriptFile: [self.data.url("lib1.js")],

你应该将lib1.js放在数据文件夹中。