Firefox加载项栏关闭事件

Firefox加载项栏关闭事件,firefox,firefox-addon,Firefox,Firefox Addon,firefox插件中有没有什么东西可以注册一个回调,当插件关闭时,我们可以通过点击左边的x按钮来调用它 我需要的是,当用户使用x按钮关闭加载项栏时,应该通知加载在该栏上的扩展名。现在发生的是,即使用户关闭了加载项栏,它也不会被关闭;相反,它只是隐藏起来 如果可以通过回调通知我们用户已经点击了x按钮,那么我可以在分机中收听。是的,先生,绝对有:MutationObserver 将其复制粘贴到浏览器环境中的草稿行文件中,然后当加载项栏关闭并打开时,您将看到一条消息 // select the tar

firefox插件中有没有什么东西可以注册一个回调,当插件关闭时,我们可以通过点击左边的x按钮来调用它

我需要的是,当用户使用x按钮关闭加载项栏时,应该通知加载在该栏上的扩展名。现在发生的是,即使用户关闭了加载项栏,它也不会被关闭;相反,它只是隐藏起来


如果可以通过回调通知我们用户已经点击了x按钮,那么我可以在分机中收听。

是的,先生,绝对有:MutationObserver

将其复制粘贴到浏览器环境中的草稿行文件中,然后当加载项栏关闭并打开时,您将看到一条消息

// select the target node
var win = Services.wm.getMostRecentWindow('navigator:browser');
var target = win.document.querySelector('#addon-bar');

// create an observer instance
var observer = new win.MutationObserver(function(mutations) {
  mutations.forEach(function(mutation) {
      if (mutation.attributeName == 'collapsed') {
          Services.prompt.alert(null,'title','addon bar toggled it WAS = ' + mutation.oldValue);
      }
  });    
});

// configuration of the observer:
var config = { attributes:true, attributeOldValue:true };

// pass in the target node, as well as the observer options
observer.observe(target, config);

// later, you can stop observing
//observer.disconnect();

要做到这一点,最简单的方法是将命令处理程序附加到有问题的按钮上。如果您的代码在浏览器窗口内运行,则可以执行以下操作:

var closeButton=document.getElementByIdaddonbar-closeButton; closeButton.addEventListenercommand,functionevent{ //加载项栏正在关闭,请执行某些操作 },假;
请注意,一旦从Firefox中删除附加条,这段代码肯定会很快停止工作。

这太过分了。此外,突变事件的代价非常高昂——如果它们在文档中的某个地方使用,则该文档中所有更改的性能都会显著下降。MutationEvents已被弃用——MutationObserver已被替换,因此不会出现性能问题。胡同学因为老师的一个回答可能不会再让你们明白了哈哈,我不知怎的忽略了你们建议的是突变观察者而不是突变事件。是的,性能考虑不起作用。不过,还是有点过分了。。。