我希望使用chrome.alarms API每隔几个小时检查一次扩展中的某个值。当主窗口页打开时,警报正在触发,但当主窗口关闭时,警报不再触发。我的事件侦听器和警报创建在后台页面上。在我的background.js中,我试图使一个通知出现在一个正常的间隔,以测试警报。
这是我的“background.js”的相关部分:
document.addEventListener("DOMContentLoaded", function(e) {
chrome.runtime.getBackgroundPage(function(bg) {
bg.chrome.alarms.create("beep", {delayInMinutes: 1, periodInMinutes: 0.1} );
});
var opt = {
type: "basic",
title: "Task due",
message: 'A task is due tomorrow.',
iconUrl: "chrome-extension://paomcbcgpoikdcjhbanhllhdbemcjokf/Agenda_32.png",
buttons: [
{
title: 'Mark as done'
}
]
}
function clr() {
chrome.notifications.clear('tst');
}
chrome.alarms.onAlarm.addListener(function(alarm) {
console.log("beeep");
clr();
chrome.notifications.create('tst', opt);
});
});我怎样才能使警报触发,即使在我的主窗口关闭之后?我读过一些有关这方面的文件,但是解决这个问题的方法却让我无法理解。
发布于 2020-07-21 08:00:43
只有当用户配置文件的至少一个浏览器窗口正在运行时,扩展才会运行,除非您在manifest.json中特别添加了一个manifest.json:
"permissions": ["background"],
"background": {
"persistent": true,
"scripts": ["bg.js"]
}让Chrome启动得更早,关闭得更晚,这样应用程序和扩展程序的寿命就会更长。当任何已安装的托管应用程序、打包应用程序或扩展程序都具有“后台”权限时,Chrome在用户启动Chrome之前就会在用户登录到他们的计算机后立即运行(无形中)。“后台”权限还使Chrome继续运行(即使关闭了最后一个窗口),直到用户显式退出Chrome为止。
重要!
确保在Chrome设置中启用了Continue running background apps:

https://stackoverflow.com/questions/63008790
复制相似问题