Я работаю над аддоном Firefox в Mac OS, где я хочу уведомлять свой компонент XPCOM, когда пользователь отключает надстройку. Это работает, за исключением того, что событие публикуется более одного раза (равно числу открытых окон FF). ), это происходит, так как AddonManager.addAddonListener (nsListener); вызывается в onload (window.addEventListener ("load", function (e) {TopWnd.onLoad (e);}, false);) в оверлейном браузере js для всех окон, а событие "onDisabling" вызывается в каждом окне ,
var nsListener = {
onDisabling: function(addon, needsRestart)
{
if (addon.id.toLowerCase() == "XXXXXXX")
{
var observerService = Components.classes["@mozilla.org/observer-service;1"]
.getService(Components.interfaces.nsIObserverService);
if (observerService) {
observerService.notifyObservers(null, "ext-disable", "Ext is disabled");
}
}
}
}
Чтобы не уведомлять компонент XPCOM из всех окон, я хочу определить, является ли текущая открытая вкладка / окно страницей надстройки, и только затем добавить AddonManager.addAddonListener (nsListener); или уведомить только с этой страницы. Каков наилучший способ определить, является ли текущее окно / вкладка дополнительной страницей.
Пожалуйста, помогите.