有人可以解释在firefox扩展中使用port.on和port.emit的上下文吗?
从官方文档我想象这应该工作:
//main.js var someData = "Message received"; self.port.emit("myMessage", someData); self.port.on("myMessage", alert(someData));
但我明白了
错误:未定义self.
将此附加到定义的对象后,如下所示:
var self = require("sdk/self"); self.port.emit("myMessage", someData);
我明白了
错误:未定义端口.
canuckistani.. 5
如果使用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); } });
cs.js:
self.port.on('attached', function() { console.log('attached...'); });
有关相关文档,请从此处开始:
https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/Content_Scripts
如果使用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); } });
cs.js:
self.port.on('attached', function() { console.log('attached...'); });
有关相关文档,请从此处开始:
https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/Content_Scripts