有没有办法在Chrome浏览器禁用/启用扩展后运行回调。
答案 0 :(得分:7)
Chrome管理API()的
chrome.management.onEnabled.addListener(function(ExtensionInfo info) {})
chrome.management.onDisabled.addListener(function(ExtensionInfo info) {})
通知更改启用和禁用扩展程序。
确保你有
"permissions": [
"management"
],
在manifest.json
chrome.management.onDisabled.addListener(function(ExtensionInfo) {
console.log(JSON.stringify(ExtensionInfo));
});
P.S:扩展本身无法监视何时被禁用。你需要第二个扩展来监控它。从扩展和用户的角度来看,禁用扩展与关闭浏览器具有完全相同的效果。
有关更多信息,请参阅documentation。
答案 1 :(得分:0)
似乎有一个 indeed 兄弟 chrome.management
api 命名空间,其中 onEnabled
可用,并且它确实按预期触发了我(在开发者模式下禁用和启用时,以及就像不在开发者模式下一样)。
你可以这样做:
chrome.management.onEnabled.addListener(start);
但请注意,如原始答案中所述,您的清单将需要额外的许可才能使用此 API。 See here 了解文档中的详细信息。
在作为开发人员打开和关闭您的扩展程序时,使用 chrome.management.onEnabled
似乎是一个真正的理智保护程序,当您的用户也这样做时,其他所有条件听起来都是一个好主意。
到目前为止,对于我的开发工作流程,我目前在我的清单指向的扩展服务工作线程脚本中的三个事件上触发我的扩展的初始化逻辑,以便重新加载扩展以及禁用和启用它都会触发初始化:
chrome.runtime.onInstalled.addListener(start);
chrome.runtime.onStartup.addListener(start);
chrome.management.onEnabled.addListener(start);
其中 start
是一个包含我的初始化逻辑的函数。
(对我而言)为什么处理自己的启用事件(基本上是在扩展启动时)在没有需要管理许可的扩展的情况下不可用,这有点不明显(对我而言)。也许在 chrome.runtime
api 中可以使用不同的事件,或者我还没有完全弄清楚的更正确的蓝图。如果您知道更好的方法,很高兴了解它。