Firefox插件栏关闭事件

时间:2014-03-03 12:50:25

标签: firefox firefox-addon

firefox插件中是否有一些内容可以通过单击左侧的x按钮来注册一个回调,这个回调会在关闭插件时被调用?

我需要的是,当用户使用x按钮关闭插件栏时,应该通知我在该栏上加载的扩展程序。现在发生的事情是,即使用户关闭插件栏,它也不会被关闭;相反,它只是隐藏。

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

2 个答案:

答案 0 :(得分:0)

是的,先生,绝对是:MutationObserver。

将其粘贴到Browser envirnoment中的暂存器文件中,然后当插件栏关闭并打开时,您将看到一条消息。

// 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();

答案 1 :(得分:0)

最简单的方法是将command处理程序附加到相关按钮。如果您的代码在浏览器窗口内运行,则会执行以下操作:

 var closeButton = document.getElementById("addonbar-closebutton");
 closeButton.addEventListener("command", function(event) {
   // Add-on bar is being closed, do something
 }, false);

请注意,当从Firefox中删除附加栏时,此代码很快就会停止工作。