使用port.onDisconnect确定何时卸载/禁用Chrome扩展程序

时间:2012-03-11 21:32:30

标签: google-chrome-extension

我知道Chrome扩展程序API没有正式的方法来确定用户何时卸载您的扩展程序(这是一种耻辱)。

我在连接到后台页面后使用来自我的内容脚本页面的port.onDisconnect侦听器来确定用户何时卸载/禁用我的扩展程序。根据文档port.onDisconnect应该只在扩展不再存在时(或者从后台页面显式调用port.disconnect时)触发,这应该包括禁用/卸载方案。

这实际上在我的机器上完美运行。每当我卸载或禁用我的扩展时,都会触发port.onDisconnect(每个打开的选项卡一次)。问题是我看到这个事件是从我的许多实际用户中解雇的。我99%确定没有这么多用户禁用/卸载我的扩展程序(我看到他们稍后使用我的扩展程序执行其他任务,而我的扩展程序安装数字并未显示许多卸载程序)。

这让我相信除了禁用/卸载扩展之外,还有一些其他条件会触发port.onDisconnect。我无法在我的机器上重现这一点。在我的机器上,只有当我禁用/卸载扩展时才会触发port.onDisconnect,而且我没有在任何地方明确地从我的后台页面调用port.disconnect。

所以我的问题是:除了用户禁用/卸载扩展程序之外,还有哪些条件会触发port.onDisconnect?我认为扩展的版本升级可能会导致这种行为,但我在我的机器上进行了测试,我认为不是这样。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

如果您的内容脚本是每次注入时都添加一个侦听器,则将运行此脚本已运行的每个打开的页面/选项卡的侦听器。

单个用户可以卸载/禁用您的扩展程序,但可能已打开10个受影响的页面/标签页,因此可能会有10个用户执行此操作。

我不确定最好的方法是什么,如果有的话,因为你想要达到的目标并不是真正支持的。