我正在使用Mac OS上的Firefox附件,當用戶禁用附加組件時,我想通知我的XPCOM組件。事件發佈不止一次(等於FF Windows打開的次數),這是因爲AddonManager.addAddonListener(nsListener);在所有窗口的瀏覽器覆蓋js上的onload(window.addEventListener(「load」,function(e){TopWnd.onLoad(e);},false);)以及在每個窗口中調用事件「onDisabling」 。Firefox附加組件:查找當前頁面是否爲附件頁
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);或僅通知該頁面。確定當前窗口/選項卡是否爲附加頁面的最佳方式是什麼?
請幫助。
您正在捕獲附加組件被禁用的事件 - 哪些*可能*是用戶單擊按鈕或另一個擴展程序來執行其作業,甚至是未來Firefox版本中的內置兼容性檢查。所以「沒有窗戶」是一種可能的情況。 –