我只是做一个简单的 chrome 扩展。
我希望我的后台页面(或部分)每 5 分钟执行一次,以获取一些数据并显示桌面通知(如果有)。我该如何执行此操作
重要提示:如果您使用非持久后台脚本(Manifest V3service_worker
或清单V2活动页面 https://developer.chrome.com/extensions/event_pages with "persistent": false
在清单.json中),setInterval
间隔 5 分钟可能会失败,因为后台脚本将在空闲超时(30 秒)后卸载,除非您很幸运有其他chrome
事件侦听器在中间触发,或者您故意使后台脚本保持活动状态(MV3 /a/66618269, MV2 /q/37017209).
如果您的扩展程序使用 window.setTimeout() 或 window.setInterval(),请改用警报 API。如果事件页面关闭,基于 DOM 的计时器将不会被执行。
在这种情况下,您需要使用chrome.alarms https://developer.chrome.com/extensions/alarms API:
chrome.alarms.create("5min", {
delayInMinutes: 5,
periodInMinutes: 5
});
// To ensure a non-persistent script wakes up, call this code at its start synchronously
chrome.alarms.onAlarm.addListener(function(alarm) {
if (alarm.name === "5min") {
doStuff();
}
});
如果有持久的后台页面,setInterval
仍然是可以接受的solution https://stackoverflow.com/a/8490416/934239。如果您确保结束时间在空闲超时的剩余时间内,它也应该在非持久性脚本中以较短的间隔(以秒为单位,而不是分钟)工作,请参阅上面的注释。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)