考虑以下Chrome扩展程序:
{
"name": "Test onStartup",
"version": "0.0.0",
"manifest_version": 2,
"background": {
"persistent": false,
"scripts": ["eventPage.js"]
},
"permissions": ["storage"]
}
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的问题吗?
答案 0 :(得分:10)
当您关闭Chrome时,其后台进程会继续运行。确保在再次启动chrome之前终止所有名为chrome
或类似的进程。
答案 1 :(得分:3)
chrome.runtime.onStartup
仅在Chrome启动时调用,而不是在扩展程序启动时调用。
chrome.runtime.onInstalled
。
答案 2 :(得分:1)
关于这个事件的主管 - 事后看来 - 显而易见:如果你在任何异步回调之后注册它,你的eventListener就不会被触发。在任何回调之外,您必须在初始加载期间注册它。
在我的情况下,它没有被解雇,因为我将它注册为我的“主”方法的一部分,该方法在设置验证后被调用,这需要回调。