两年前,我们使用manifest v2开发了一个自定义Chrome扩展,它可以定期 (每45分钟或休眠后20分钟) 或按计划 (每天或每周) 触发弹出窗口。
Extension允许使用chrome.alarms
API来安排代码“定期运行或在将来的指定时间运行”,从而实现可配置的时间间隔。
在升级扩展以使用manifest v3后,按照Manifest v3 migration checklist中的说明,我们运行了多次测试,但均失败。我们认为这是因为如果扩展闲置一天或更长时间,chrome.alarms
API将不会触发或被触发。
迁移到manifest v3后出现问题。chrome.alarms
API不会每天触发,也不会按设置的时间间隔触发,并且不会显示任何通知。
关于我们如何在manifest v3中实现这个目标,就像我们在manifest v2中所做的那样,有什么想法吗?我们应该关注什么?其他人看到这个问题了吗?
function triggerAlarm() {
chrome.storage.local.get(['delayInMinutes'],function(res){
console.log(res);
//code for creating alarm
chrome.alarms.create('createAlarm', {
delayInMinutes:delayInMinutes
});
});
//code to listen the alarm
chrome.alarms.onAlarm.addListener(alarmListener);
chrome.alarms.get('createAlarm', function (alarm) { });
}
function alarmListener(alarm) {
//business logic
}
1条答案
按热度按时间brjng4g31#
这不起作用,因为您是异步注册
alarms.create
事件侦听器的。如中所述,必须从根范围中的页的开头同步注册事件侦听器。如果将事件侦听器移出
triggerAlarm()
并移入根范围,则事件处理程序将按预期触发。查看完整答案:https://bugs.chromium.org/p/chromium/issues/detail?id=1295683