阅读时,我的印象是,即使在Chrome关闭,页面刷新等情况下,Chrome闹钟仍会继续有效。来自Google的一个结果:
使用Chrome闹钟API,您可以设置持续时间长的闹钟 即使应用程序的后台页面处于非活动状态,也会安装该应用程序。
我的问题是我在我的options.js页面中为Chrome扩展程序设置了Chrome警报。保存选项页面时会创建警报(chrome.alarms.create)。
如果我打开页面,闹钟就会起作用。但是,如果我重新加载页面(options.html),我就不再收到警报了。
以下是我的options.js
的一部分$('#save-options-button').on('click', function() {
//Clears existing alarm
chrome.alarms.clearAll();
//Create alarm
chrome.alarms.create("fetchAlarm", {
delayInMinutes: 1,
periodInMinutes: 1
});
chrome.alarms.onAlarm.addListener(function(alarm) {
console.log("Got an alarm!", alarm);
});
});
答案 0 :(得分:4)
我猜你引用的是Chrome Apps 文档,这就是为什么它会让人感到困惑。
意思是event pages(一种background page)将被唤醒以服务于警报事件,即使它们因闲置而被卸载。
这仅适用于 到事件/背景页面。 Chrome不会随机打开一个页面,因为过去发生过该页面收听的事件。因此,您不应将实际的事件侦听器逻辑放入UI页面(选项,弹出窗口等)
在您的情况下,刷新页面会使包含侦听器的JS上下文与其一起销毁,并且您的逻辑仅在单击后添加侦听器。即使您将addListener
添加到顶级代码,它也只会在页面打开时运行。
因此,您需要添加一个后台页面来为该事件(实际的侦听器)提供服务。
背景页面通常随时可以回答事件。事件页面的特殊之处在于,Chrome会记住哪些事件应该触发其加载并且不会加载它们。您可以阅读更多相关信息in another answer of mine。