在我的Firefox扩展中,onUnstalled事件似乎没有触发 [英] In my firefox extension, onUninstalled event doesn't seem to fire

查看:0
本文介绍了在我的Firefox扩展中,onUnstalled事件似乎没有触发的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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甚至不会尝试传达它未运行时发生的更改,任何监听程序只需在每次启动浏览器时重新阅读加载项列表。

总而言之,作为一个"经典"扩展,您必须使用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

这篇关于在我的Firefox扩展中,onUnstalled事件似乎没有触发的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆