希望我的问题尚未得到解答,因为有很多相关的Q& As 首先,这是我的附加结构:
addon/
data/
contentScript1.js
lib/
lib1.js
main.js
由于箭头在markdown中不起作用,我将用文字描述:加载项是根,然后是两个文件夹:data
和lib
以及一个文件:main.js
。 data
内的contentScript1.js
内lib
内lib1.js
内contentScript1.js
。
首先,我想通过port.on
和port.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
的部分,因为在这两个部分之间传递的消息(main
和console.log
)工作正常。
我现在的问题是:为什么标记port.on
无效?我真的试图通过port.emit
和{{1}} ...
答案 0 :(得分:2)
好像你把lib1.js放在lib文件夹而不是数据文件夹中。因为你正在使用
contentScriptFile: [self.data.url("lib1.js")],
你应该将lib1.js放在数据文件夹中。