chrome.runtime.onStartup从不开火?

时间:2013-07-12 18:22:31

标签: google-chrome google-chrome-extension

考虑以下Chrome扩展程序:

的manifest.json

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

eventPage.js

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

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

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

3 个答案:

答案 0 :(得分:10)

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

答案 1 :(得分:3)

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

当您在chrome:// extensions中手动重新加载扩展程序或扩展程序调用{​​{1}}时,会调用

chrome.runtime.onInstalled

答案 2 :(得分:1)

关于这个事件的主管 - 事后看来 - 显而易见:如果你在任何异步回调之后注册它,你的eventListener就不会被触发。在任何回调之外,您必须在初始加载期间注册它。

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