firefox插件将工作程序附加到选项卡

firefox插件将工作程序附加到选项卡,firefox,firefox-addon,firefox-addon-sdk,Firefox,Firefox Addon,Firefox Addon Sdk,在我的main index.js中,我正在侦听选项卡就绪事件: tabs.on('ready', function(tab){ deploy_scripts(tab) }) var deploy_scripts = function deploy_scripts(tab) { tab.my_content_scripts = tab.attach({ contentScriptFile: [<files>] }) tab.my_content_scripts

在我的main index.js中,我正在侦听选项卡就绪事件:

tabs.on('ready', function(tab){
  deploy_scripts(tab)
})

var deploy_scripts = function deploy_scripts(tab) {
  tab.my_content_scripts = tab.attach({
    contentScriptFile: [<files>]
  })
  tab.my_content_scripts.port.on("message_from_content_script", function(msg){
    tabs.activeTab.my_content_scripts.port.emit("message_to_content_script", <some_data>)
  })
}

由于tabs.activeTab.my_content\u scripts.port.emit存在,因此从我的index.js文件中抛出时没有错误,但尽管如此,我的内容脚本没有接收任何内容。

您的
emit
代码位于
消息
侦听器中。它跑了吗?您是否从附加的内容脚本发送此消息<代码>“messages”
是一个可怕的消息名称btw@minj是的,我在emit之前放置了一个console.log,它可以运行,并且在emit运行时不会抛出错误。我知道“消息”是一个可怕的名字,但这只是一个例子。我会编辑它。为什么不重新使用
tab
而不是
tabs.activeTab
?它们可能不相同您的
emit
代码在
“messages”
侦听器中。它跑了吗?您是否从附加的内容脚本发送此消息<代码>“messages”
是一个可怕的消息名称btw@minj是的,我在emit之前放置了一个console.log,它可以运行,并且在emit运行时不会抛出错误。我知道“消息”是一个可怕的名字,但这只是一个例子。我会编辑它。为什么不重新使用
tab
而不是
tabs.activeTab
?它们可能不一样
self.port.on("message_to_content_script", function(msg){
  // do something with data
})