如何在contentScript中使用port.emit()
How to use port.emit() in a contentScript
我正在尝试绑定一个
self.port.emit()
到窗口中的一个事件,以通知我的pagemod(和page-worker)做一些事情。但是,我尝试使用port.emit()函数都没有成功。
index.js:
pageMod.PageMod({
include: "*",
contentScriptWhen: "ready",
contentScriptFile: [
data.url("jquery.js"),
data.url("jquery-ui.min.js"),
data.url("definitionsender.js"),
data.url("define.js")
],
onAttach: function(worker){
contentScriptFile: [
data.url("jquery.js"),
data.url("jquery-ui.min.js"),
data.url("define.js")
]
worker.port.on("updatedWord", function(){
console.log("success");
});
}
});
define.js:
$(window).dblclick(function() {
var selected = getSelected();
if (selected!="") {
var completedURL = "http://www.dictionary.com/browse/" + selected;
$('#define').dialog("open");
dictionaryRef.contentURL = completedURL;
self.port.emit("updatedWord");
}
});
[EDIT]:我回顾了我的代码,这3行实际上没有改变任何东西。但是,添加
var myScript = "window.addEventListener('dblclick', function() {" +
" var selection = window.getSelection().toString();" +
" if (selection != ''){" +
" self.port.emit('getWord', selection);" +
"}});"
作为pageMod的contentScript创建了一个工作的port.emit(),但是,后续的port.emit()和port.on()不能工作。
try:
pageMod.PageMod({
include: "*",
contentScriptWhen: "ready",
contentScriptFile: [
data.url("jquery.js"),
data.url("jquery-ui.min.js"),
data.url("definitionsender.js"),
data.url("define.js")
],
onAttach: function(worker){
contentScriptFile: [
data.url("jquery.js"),
data.url("jquery-ui.min.js"),
data.url("define.js")
]
worker.port.on('dblclick', function(html) {
console.log("success");
});
}
});
或者你应该使用:
index.js:
pageMod.PageMod({
include: "*",
contentScriptWhen: "ready",
contentScriptFile: [
data.url("jquery.js"),
data.url("jquery-ui.min.js"),
data.url("definitionsender.js"),
data.url("define.js")
],
onAttach: function(worker){
contentScriptFile: [
data.url("jquery.js"),
data.url("jquery-ui.min.js"),
data.url("define.js")
]
worker.port.on("updatedWord", function(){
console.log("success");
});
}
});
define.js:
$(window).dblclick(function() {
var selected = getSelected();
if (selected!="") {
pageMod.port.emit("updatedWord");
}
});
相关文章:
- $emit,$broadcast,原型继承
- 如何在angular js中使用$emit后重新加载数据
- TypeError:socket.emit不是函数
- Socket.io socket.emit 不将数据传递到服务器
- 使用socket.io、jquery mobile、socket.emit();的时序逻辑有点奇怪;
- 客户端如何知道发射是否失败?socket.emit()有回调吗
- Socket.io-io.to.emit向所有连接的用户发射
- socket.emit-事件名称[socket.io]
- AngularJS Scope.on和Scope.emit在筛选器中的调用顺序
- 正在尝试访问已.emit但无法访问的数组数据
- Chrome扩展多个端口导致Disconnected Port错误
- 为什么在定义回调/侦听器函数(异步消息传递,port.on)后没有立即设置全局变量
- $rootScope.$emit and $on
- Bluebird unhandled Error with emit NodeJS
- Firefox 附加组件 SDK Worker.port 事件不起作用
- 在我的情况下,如何在指令中设置$emit
- 使用 self.port.on 时,火狐内容脚本中的变量未更新
- Firefox addon - port.emit inside port.on
- 无法让 port.emit 和 port.on 在 Firefox 附加组件中工作
- 如何在contentScript中使用port.emit()