9

从 chrome 浏览器禁用/启用扩展后,有没有办法运行回调。

4

2 回答 2

14

Chrome 管理 API() 的

通知扩展启用和禁用的更改。

确保你有

"permissions": [
    "management"
  ],

在你的manifest.json

示例演示

chrome.management.onDisabled.addListener(function(ExtensionInfo) {
    console.log(JSON.stringify(ExtensionInfo));
});

PS:当它被禁用时,它自己的扩展无法监控。你需要第二个扩展来监控它。从扩展程序和用户的角度来看,禁用扩展程序与关闭浏览器的效果完全相同。

有关详细信息,请参阅文档

于 2012-12-21T04:40:58.377 回答
0

似乎确实有一个可用的兄弟chrome.managementapi 命名空间onEnabled,并且它确实按预期对我触发(在开发人员模式下禁用和启用时,以及不在开发人员模式下时)。

你可以这样做:

chrome.management.onEnabled.addListener(start);

但请注意,您的清单将需要额外的权限才能使用此 API,如原始答案中所述。有关文档中的详细信息,请参见此处

在作为开发人员打开和关闭您的扩展程序时,使用chrome.management.onEnabled似乎是一个真正的理智保护措施,当您的用户也这样做时,所有其他相同的听起来都是一个好主意。

因此,到目前为止,对于我的开发工作流程,我目前在我的清单指向的扩展服务工作脚本中的三个事件上触发我的扩展的初始化逻辑,以便重新加载扩展以及禁用和启用它都会触发初始化:

chrome.runtime.onInstalled.addListener(start);
chrome.runtime.onStartup.addListener(start);
chrome.management.onEnabled.addListener(start);

其中start是一个包含我的初始化逻辑的函数。

这有点不明显(对我来说)为什么在没有扩展需要管理权限的情况下处理它自己的启用事件(基本上是在扩展启动时)将不可用。也许有一个不同的事件可以用于这个,在chrome.runtimeapi 中,或者一个更正确的蓝图,我还没有完全弄清楚。如果您知道更好的方法,很高兴了解它。

于 2021-07-28T16:44:44.017 回答