检测后台脚本卸载

dis*_*kit 6 google-chrome-extension firefox-addon-webextensions

对于我的 chrome 和 firefox 扩展,我需要一种方法来确定后台脚本是否已卸载或正在卸载。发生这种情况时是否会触发事件?我浏览了 stackoverflow 上的多个链接,甚至一些官方的 Chromium 错误链接,但找不到具体的答案。后台脚本不支持 beforeunload 并且关闭窗口并不能保证浏览器关闭,因为如果扩展程序具有“后台”权限,后台脚本仍将在后台运行。我现在能做什么?

Xan*_*Xan 2

最接近的是chrome.runtime.onSuspend,但不能保证上下文关闭之前允许您多长时间。请注意,WebExtensions 尚不支持此功能。文件明确指出:

在卸载之前发送到事件页面。这为扩展提供了进行一些清理工作的机会。请注意,由于页面正在卸载,因此在处理此事件时启动的任何异步操作都不能保证完成

一般来说,您不能对事件/后台页面卸载做太多事情,并且应该使您的代码对突然卸载具有鲁棒性。某些关闭甚至可能不会触发此事件。

  • 你基本上不能。浏览器在关闭之前不会等待任何事件。您应该定期将数据转储到存储中以获得最新的快照。 (4认同)
  • 不,我建议在数据更改时对“storage.set”进行排队。无论如何,要容忍小块数据的丢失,因为同样,在关闭之前无法保证任何操作完成。 (3认同)