我正在尝试使用port.on()和port.emit()一起使用page-worker和pageMod,但来自define.js的信号对pageMod的port.on()没有任何影响。 ..这是使用port.on()和port.emit()的正确方法,还是以这种方式将两者链接在一起是不允许的?
index.js:
context.MapRoute(
name: "SPARouting",
url: "{*.}",
defaults: new { controller = "Application", action = "Index" }
);
define.js:
pageMod.PageMod({
include: "*",
contentScriptWhen: "ready",
contentScriptFile: [
data.url("jquery.js"),
data.url("jquery-ui.min.js"),
data.url("define.js")
],
onAttach: function(worker){
worker.port.on("getWord", function(word) {
console.log(word);
worker.port.emit("newWord", word);
});
worker.port.on("updatedWord", function(URL){
console.log(URL);
});
}
});
dictionaryRef.Page({
contentScriptWhen: "ready",
contentScriptFile: [
data.url("jquery.js"),
data.url("jquery-ui.min.js"),
data.url("define.js"),
],
contentURL: "http://www.dictionary.com/browse/",
onAttach: function(worker){
worker.port.on("newWord", function(word) {
console.log(word);
self.contentURL = "http://www.dictionary.com/browse/" + word;
worker.port.emit("updatedWord", self.contentURL);
});
}
});
基本上,getSelected()将捕获突出显示的单词,然后“dblclick”绑定应该通过port.emit()发送一个信号,pageMod应该接收,然后传递给页面工作者以更改其URL,这将允许我访问DOM并刮取字典定义,以便它可以在弹出窗口中显示在主窗口中。目前,没有一个port.emit()语句可以工作。