2012-04-05 70 views
0

我想编写一个扩展程序,以便在指定的时间每天显示桌面通知。其通过Chrome的API咋一看,似乎只有这样,才能做到这将是:以足够低的分辨率不每天在特定时间显示桌面通知

  • 创建背景页我的分机,
  • 使用的setInterval()税收CPU(甚至5分钟罚款),
  • 当间隔火灾时,检查当前时间是否在所需的时间后,
  • 确保用户尚未显示通知今天。

(最后一步的细节与我的问题无关,只是为了表明我意识到我需要阻止通知的“拍打”)。

虽然这似乎相当间接且可能很昂贵;有没有办法解决?需要背景页吗?

我想我可以直接调用setTimeout()并且只触发一次事件(通过计算现在&所需时间之间的时间),然后在显示通知之后再次调用它。出于某种原因,这听起来更“脆弱”的,虽然我不知道为什么......

+0

好办法 - 我想setInterval不太好,因为当你有一天的延迟和浏览器中执行的setTimeout重新开始,然后通知将不会显示 – hamczu 2012-04-06 14:01:56

+0

感谢hamczu,在被重新启动,我只想重新启动的setInterval定时器浏览器的情况下,因为我后台页面将再次收到DOMContentLoaded事件。 – 2012-04-09 13:39:28

回答

1

我想你会希望背景页面顺利做到这一点。您不能使用内容脚本,因为您需要保持“状态”/计时器。

所以,当后台第一次加载页面(浏览器启动),你的工作出当前时间和偏移到下一个通知时间和setInterval到精确的时间间隔。这样你就不需要每五分钟进行一次轮询和/或如果你已经显示了这条信息,你就可以进行调查。您只需在确切的时间显示它。这必须比投票更高效,更有效,更清洁。在通知时,您只需重新设置时间间隔。

一些样品的功能在这里:

setTimeout but for a given time

通过阅读上面的帖子,并从在网络上快速搜索看来,你应该没有问题,然后调用setInterval一个时间间隔,如每天一次。加尔文建议25天!

这就是我将如何接近它。

编辑:由于发布一两件事,已涌现想到的是,如果PC被休眠了n个小时发生了什么?我需要自己测试一下这个类似的项目,所以一旦我有机会对此进行测试,我会进行更新。

+0

感谢理查德,我想我对使用后台页面有点犹豫,因为谷歌的文档声明,除非需要(因为他们使用资源),否则它们应该被避免,但这绝对是似乎要走的路。我也想知道冬眠的事情,但希望Chrome能够考虑到这一点。 (顺便说一句,这将是桌面机器的内部工具,所以我可能不需要担心太多......) – 2012-04-09 13:36:33