2014-03-03 3 views
1

Есть ли что-то в firefox addon, через которое мы можем зарегистрировать обратный вызов, который вызывается, когда аддон закрыт, нажав кнопку x слева?Firefox addon bar close event

Что мне нужно, когда пользователь закрывает панель аддонов с помощью кнопки x, мое расширение, загруженное на эту панель, должно быть уведомлено. Теперь, что происходит, даже если пользователь закрывает панель аддонов, он не закрывается; вместо этого он просто прячется.

Если мы можем сообщить через обратный вызов, что пользователь нажал кнопку x, я мог бы прослушать его в расширении.

ответ

0

Да, сэр там абсолютно: MutationObserver.

Скопируйте этот файл в блокнот в браузере 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(); 
+0

Это довольно перебор. Кроме того, события мутации имеют очень крутой ценовой тег - если они используются где-то в документе, производительность для всех изменений в этом документе значительно падает. –

+0

MutationEvents устарели - [MDN: MutationEvents] (https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Mutation_events?redirectlocale=en-US&redirectslug=Web%2FGuide%2FAPI%2FDOM%2FEvents % 2FMutation_events) MutationObserver был заменен, поэтому у него нет проблем с производительностью. [MDN: MutationObserver] (https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver) Woo student becoems ​​Учитель учителя за один ответ, вероятно, не получит вас снова haha: P – Noitidart

+0

Ах, я почему-то забыл, что вы предложили наблюдателям мутации, а не мутационным событиям. Да, соображения производительности не играют тогда никакой роли. Тем не менее, довольно перебор ... –

0

Самый простой способ сделать это, чтобы прикрепить command обработчик к кнопке в вопросе. Если ваш код работает в окне браузера, это будет делать:

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

Обратите внимание, что этот код привязывается прекратить работу очень скоро, как надстройки на панели удаляется из Firefox.