Google chrome extension 检测后台脚本卸载

Google chrome extension 检测后台脚本卸载,google-chrome-extension,firefox-addon-webextensions,Google Chrome Extension,Firefox Addon Webextensions,对于我的chrome和firefox扩展,我需要一种方法来判断后台脚本是否已卸载或正在卸载。发生这种情况时是否触发事件?我浏览了stackoverflow上的多个链接,甚至是一些官方的chromium bug链接,但找不到具体的答案。后台脚本不支持beforeunload,关闭窗口并不保证浏览器已关闭,因为如果扩展具有“后台”权限,则后台脚本仍将在后台运行。我现在能做什么 最接近的是,但无法保证在上下文关闭之前允许您有多少时间请注意,到目前为止,WebExtensions还不支持这一点。文档明确

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

最接近的是,但无法保证在上下文关闭之前允许您有多少时间请注意,到目前为止,WebExtensions还不支持这一点。文档明确说明:

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


一般来说,您在事件/背景页面卸载方面做不了太多,应该使代码对突然卸载具有健壮性。此事件甚至可能不会触发某些关机。

chrome.runtime.onSuspend用于事件页面,我不使用它。我正在使用一个持久的。让我们考虑一下情况。内存中有一些关于扩展的数据,用户可以通过任何可能的方式关闭chrome。现在,在chrome真正关闭之前,我想将数据保存到本地存储,我该怎么做?你基本上不能。浏览器关闭前不会等待任何事件。您应该定期将数据转储到存储器中,以获得最新的快照。是的,但是关于边缘情况。无法转储的最后一段数据,因为间隔未过,chrome已关闭。我想您现在会建议将间隔缩短为1秒?不,我建议在数据更改时将
存储排队。设置
。而且无论如何都要容忍小数据块的丢失,因为同样,没有任何操作保证在关机之前完成。Chrome最好的功能是Chrome.tabs.onRemoved