Javascript 与DOM交互的Firefox扩展

Javascript 与DOM交互的Firefox扩展,javascript,jquery,firefox-addon,firefox-addon-sdk,Javascript,Jquery,Firefox Addon,Firefox Addon Sdk,我正在开发一个firefox扩展,它有一个选项面板,可以与当前的DOM选项卡交互。 当您选择一个选项时,当鼠标在上方时,活动选项卡的DOM中的所有元素都是高位的,当您单击一个元素时,我希望根据面板中选择的选项触发不同的操作。 我已经让它工作了,但是当您选择一个选项,然后选择其他选项时,内容脚本“opt”变量具有这两个值 main.js panel.port.on('select', function(sel){ attachScript(sel); panel.hide(); }); fu

我正在开发一个firefox扩展,它有一个选项面板,可以与当前的DOM选项卡交互。 当您选择一个选项时,当鼠标在上方时,活动选项卡的DOM中的所有元素都是高位的,当您单击一个元素时,我希望根据面板中选择的选项触发不同的操作。 我已经让它工作了,但是当您选择一个选项,然后选择其他选项时,内容脚本“opt”变量具有这两个值

main.js

panel.port.on('select', function(sel){
 attachScript(sel);
 panel.hide();
});

function attachScript(selected)
{
  var worker = tabs.activeTab.attach({
   contentScriptFile: [self.data.url("js/jquery-1.11.3.min.js"), self.data.url("js/content.js")]   
  });

  worker.port.emit('option', selected);
}
content.js

var opt = '';

self.port.on('option', function(option){
 $('body').off('click', '.activelem',controlClick);
 if (option)
 {
  $('body').on('click', '.activelem', controlClick);
  opt = option;      
  window.addEventListener('mousemove', handler);    
 }
});
我的问题是:

  • 每次我选择panel选项并执行attachScript函数时,脚本都会被注入,还是第一次被取消
  • 我是否需要设置一个port.once来注入脚本,然后使用一个普通的port.on?如果是这样的话,我如何每次都与内容脚本通信
  • 如何在每次按下ActionButton之后删除内容脚本中的侦听器,以便每次打开面板都是一个新的开始
每次选择panel选项并执行attachScript函数时,脚本都会被注入

我是否需要设置一个port.once来注入脚本,然后使用一个普通的port.on?如果是这样的话,我如何每次都与内容脚本通信

您可能应该跟踪哪些选项卡已经连接了工作人员,a适合于此目的

如何在每次按下ActionButton之后删除内容脚本中的侦听器,以便每次打开面板都是一个新的开始


试着给工人打电话

谢谢你的帮助,但恐怕我做不到你评论的那种软弱的事。我已经做了一个chrome扩展,但是Firefox版本正在抵制。Firefox支持弱映射