Javascript 如何在禁用的加载项上检测卸载关闭原因

Javascript 如何在禁用的加载项上检测卸载关闭原因,javascript,firefox-addon,Javascript,Firefox Addon,因此,在关机时,如果插件被禁用,并且用户单击“删除”,则卸载原因不会触发。(无原因触发)如何从禁用的加载项检测此卸载 我需要知道,因为卸载时我删除了pref分支 function shutdown(aData, aReason) { console.log('shutdown reason = ', aReason); if (aReason == APP_SHUTDOWN) return; windowListener.unregister(); //star

因此,在关机时,如果插件被禁用,并且用户单击“删除”,则卸载原因不会触发。(无原因触发)如何从禁用的加载项检测此卸载

我需要知道,因为卸载时我删除了pref分支

function shutdown(aData, aReason) {
    console.log('shutdown reason = ', aReason);
    if (aReason == APP_SHUTDOWN) return;
    windowListener.unregister();

    //start pref stuff more
    myPrefListener.unregister();
    if ([ADDON_UNINSTALL].indexOf(aReason) > -1) {
        console.log('deleting branch of: ' + prefPrefix);
        Services.prefs.deleteBranch(prefPrefix);
    }
    //end pref stuff more
}

您应该在卸载加载项时调用它,即使该加载项已禁用。

啊,我已经尝试过了,但这是一种方法。令人困惑的是,当我从插件管理器中单击“删除”时,它不会触发它,然后我会再次安装它,它会在下一个插件安装时卸载上一个插件。我现在意识到这是一个软卸载,直到
Undo
按钮消失。很酷,我现在拿到了谢谢!:)更新如果你想实现
卸载
你必须实现
安装
,给它简单的参数就可以了,否则
卸载
将永远不会触发。因此,一个简单的
函数安装(a,b){}
就足够了。但是一个
函数install(){}
不足以触发
卸载
@Noitidart,不确定你从哪里得到这个,但是你必须实现
安装
,这是不正确的。您可以将
安装作为空函数。事实上,您甚至不必提供
install
(尽管
AddonManager
将转储警告,但仍执行
uninstall
)您确定吗?我在几个月前对此进行了测试,然后更新了MDN文档。我必须重新测试,然后可能撤消MDN更新..:/妈的,你说得对。我把它删掉了,是在: