Javascript 是否有一个事件或方法可以知道何时在扩展页面中打开或关闭Chrome扩展?

Javascript 是否有一个事件或方法可以知道何时在扩展页面中打开或关闭Chrome扩展?,javascript,events,google-chrome-extension,listener,Javascript,Events,Google Chrome Extension,Listener,我有一个Chrome扩展,到目前为止运行良好。 安装或启动扩展时,需要加载一些设置。 所以我一直在我的背景页面中使用这个: chrome.runtime.onInstalled.addListener(loadSettings); chrome.runtime.onStartup.addListener(loadSettings); 基本上,它运行loadSettings()函数初始化扩展 我刚刚遇到了一个意想不到的情况,在做了一些研究之后,我找不到答案。 似乎在关闭扩展时,后台页面加载的设置

我有一个Chrome扩展,到目前为止运行良好。
安装或启动扩展时,需要加载一些设置。
所以我一直在我的背景页面中使用这个:

chrome.runtime.onInstalled.addListener(loadSettings);
chrome.runtime.onStartup.addListener(loadSettings);
基本上,它运行loadSettings()函数初始化扩展

我刚刚遇到了一个意想不到的情况,在做了一些研究之后,我找不到答案。
似乎在关闭扩展时,后台页面加载的设置和变量被卸载。

你怎么知道在Chrome Extensions页面中是否已经关闭和打开了扩展?(在chrome://extensions/)

当扩展被禁用时,后台脚本应停止执行,扩展页面关闭,内容脚本将无法访问与后台脚本的通信

在您的内容纸条中,您可以收听以下内容:

chrome.runtime.connect().onDisconnect.addListener(()=>{
console.log('disconnected');
location.reload();

});

关闭扩展后,它将无法再运行。它唯一剩下的部分是匹配选项卡中的内容脚本(直到该选项卡被导航或重新加载)。内容脚本可以通过定期发送假消息并在回调中检查chrome.runtime.lastError来检测是否禁用了扩展。不管怎样,loadSettings具体初始化了什么?很好的信息。最重要的是知道何时重新打开扩展,以便它可以使用chrome.storage检查存储的变量。它需要这些,以便可以检查以前存储的扩展状态,例如它应该正在运行、禁用、其他等。然后它可以执行诸如更新浏览器操作图标标题和图标、根据保存的设置使扩展工作等操作,而无需事件来获取这些存储的变量,扩展被默认设置卡住了,而不是存储的设置。你要么删除manifest.json中的
“persistent”:false(并将代码放在脚本开头读取状态),要么重新编写扩展,只在chrome.tabs.onUpdated等事件侦听器中执行操作。这很有趣,但我真正想知道的是,何时重新打开扩展。这是因为在后台页面安装或启动时加载的设置不再可用,并且不清楚在切换回扩展后如何再次加载这些设置。