【问题标题】:In my firefox extension, onUninstalled event doesn't seem to fire在我的 Firefox 扩展中,onUninstalled 事件似乎没有触发
【发布时间】:2011-06-08 19:22:57
【问题描述】:

Firefox 4 公开了一些事件来检测用户何时卸载扩展。我可以让onUninstalling 触发(当用户单击以删除扩展程序时),但是当onUninstalled 触发时(应该在重新启动后发生)我什么也不会发生。

Components.utils.import("resource://gre/modules/AddonManager.jsm");
AddonManager.addAddonListener({
    onUninstalled: function(addon){
        //does not work
        alert("uninstalled!");
    },
    onUninstalling: function(addon){
        //works as expected
        alert("uninstalling!");   
    }
  });

我最终希望在用户卸载我的扩展程序后显示一个页面。如果可以的话,我宁愿在 onUninstalled 之后再做。

【问题讨论】:

    标签: firefox firefox-addon firefox4


    【解决方案1】:

    方法onUninstalled在扩展被删除后被调用——所以你的扩展不可能接收到它自己的卸载事件,它不再接收它。您可以收到有关其他加载项被卸载的通知,但这就是此事件的重点。查看源代码,似乎还有一个额外的问题 - 此通知仅针对不需要重新启动的附加组件发送。这是有道理的,因为重新启动可以从根本上改变这种情况,因为外部应用程序在扩展目录中添加或删除了附加组件。因此 Firefox 甚至不会尝试传达它未运行时发生的更改,任何侦听器都应该在每次浏览器启动时重新读取加载项列表。

    总而言之,作为“经典”扩展程序,您必须使用onUninstalling,即使此事件不保证会卸载扩展程序(用户仍然可以恢复他的选择)。自举扩展(不需要重启的扩展,参见https://developer.mozilla.org/en/Extensions/Bootstrapped_extensions)更容易,即使扩展被禁用,也会调用 bootstrap.js 中的方法uninstall()。但是,将您的扩展程序变成一个引导程序并不总是那么容易,有许多问题:http://adblockplus.org/blog/how-many-hacks-does-it-take-to-make-your-extension-install-without-a-restart

    【讨论】:

    • 很好的解释!感谢您的周到回复。
    猜你喜欢
    • 2021-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-07
    • 2020-12-30
    • 2013-07-28
    • 2012-06-12
    • 1970-01-01
    相关资源
    最近更新 更多