有人可以解释在firefox扩展中使用port.on和port.emit的上下文吗?
从官方文档我想象这应该工作:
//main.js
var someData = "Message received";
self.port.emit("myMessage", someData);
self.port.on("myMessage", alert(someData));
Run Code Online (Sandbox Code Playgroud)
但我明白了
错误:未定义self.
将此附加到定义的对象后,如下所示:
var self = require("sdk/self");
self.port.emit("myMessage", someData);
Run Code Online (Sandbox Code Playgroud)
我明白了
错误:未定义端口.
如果使用page-mod模块将内容脚本注入网页,则可以在内容脚本中使用self.port与main.js进行通信.例如:
main.js:
var data = require('sdk/self').data;
require('sdk/page-mod').PageMod({
include: ["*"],
contentScriptFile: [data.url('cs.js')],
attachTo: ["existing", "top"],
onAttach: function(worker) {
worker.port.emit('attached', true);
}
});
Run Code Online (Sandbox Code Playgroud)
cs.js:
self.port.on('attached', function() {
console.log('attached...');
});
Run Code Online (Sandbox Code Playgroud)
有关相关文档,请从此处开始:
https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/Content_Scripts
归档时间: |
|
查看次数: |
1788 次 |
最近记录: |