10

考虑以下 Chrome 扩展:

清单.json

{
    "name": "Test onStartup",
    "version": "0.0.0",
    "manifest_version": 2,
    "background": {
        "persistent": false,
        "scripts": ["eventPage.js"]
    },
    "permissions": ["storage"]
}

事件页面.js

chrome.runtime.onStartup.addListener(function() { 
    console.log("I started up!");
    chrome.storage.local.set({"startedUp": true});
});

chrome.runtime.onStartup被记录为触发“当安装了此扩展的配置文件首次启动时”,我怀疑它也会在重新加载扩展时触发。但是,在重新启动浏览器或重新加载扩展程序后,我在's 的控制台 中看不到该console.log消息,并且没有产生任何结果,因此我怀疑未调用侦听器。_generated_background_page.htmlchrome.storage.local.get("startedUp", function(v) { console.log(v) })

当此事件被触发或错误地绑定到它或类似的事情时,我是否误解了?Linux 上的 Chrome 28.0.1500.71 有问题吗?

4

3 回答 3

12

当您关闭 chrome 时,它​​的后台进程会继续运行。chrome确保在再次启动 chrome 之前终止所有名为或类似的进程。

于 2013-07-13T04:17:01.500 回答
11

chrome.runtime.onStartup仅在 Chrome 启动时调用,而不是在扩展程序启动时调用。

chrome.runtime.onInstalled当您在 chrome://extensions 中手动重新加载扩展程序或扩展程序调用chrome.runtime.reload().

于 2013-07-13T00:58:12.000 回答
2

事后看来,这个事件有点明显:如果您在任何异步回调之后注册它,您的 eventListener 将不会被触发。您必须在初始加载期间注册它,在任何回调之外。

在我的情况下,它没有被解雇,因为我将它注册为我的“主要”方法的一部分,该方法在设置验证后调用,需要回调。

于 2016-10-23T10:32:33.283 回答