我正在使用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版本中的内置兼容性检查。所以“没有窗户”是一种可能的情况。 –