我正在为实时产品开发浏览器扩展。我有一个在manifest.json 中设置了“persistent : true”的背景页面(我使用的是v2 版本)。我使用 setInterval() 每秒不断地轮询服务器以获取新数据。后台脚本还会缓存迄今为止收集的数据,并将其提供给任何新打开的选项卡。
一切工作正常,直到有时我注意到当我让计算机长时间处于睡眠状态时,我对服务器的轮询就会停止!如果我刷新任何现有选项卡,我确实会看到缓存的数据。这意味着,后台页面没有被 Chrome 杀死。我的问题是,为什么 chrome 只是停止 setInterval() 调用?另外,如果投票因某种原因停止,恢复投票的正确方法是什么?
//relevant part of manifest.json
"background": {
"scripts": [
"js/background/jquery.min.js",
"js/background/bgconfig.js",
"js/background/backgroundmanager.js",
"js/background/eventsfetcher.js"
],
"persistent": true
},
Thanks!
根据 chrome 文档,你应该使用警报API https://developer.chrome.com/docs/extensions/reference/alarms/反而。我不知道它是否能解决问题,但绝对值得尝试!
I quote:
如果您的扩展程序使用 window.setTimeout() 或 window.setInterval(),请改用警报 API。如果事件页面关闭,基于 DOM 的计时器将不会被执行。
https://web.archive.org/web/20130715023501/http://developer.chrome.com/extensions/event_pages.html https://web.archive.org/web/20130715023501/http://developer.chrome.com/extensions/event_pages.html
=> https://developer.chrome.com/docs/extensions/reference/alarms/ https://developer.chrome.com/docs/extensions/reference/alarms/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)