0

我想编写一个扩展程序,每天在指定时间显示桌面通知。快速浏览一下 Chrome API,似乎唯一的方法是:

  • 为我的扩展创建一个背景页面,
  • 使用分辨率足够低的 setInterval() 不会对 CPU 造成负担(即使 5 分钟也可以),
  • 当间隔触发时,检查当前时间是否在所需时间之后,
  • 确保今天尚未向用户显示通知。

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

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

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

4

1 回答 1

1

我认为您会希望背景页面能够顺利完成此操作。您不能使用内容脚本,因为您需要保留“状态”/计时器。

因此,当后台页面首次加载(浏览器启动)时,您可以计算出当前时间和下一个通知时间的偏移量,并将 setInterval 设置为该确切时间间隔。这样你就不需要每五分钟轮询一次和/或如果你已经显示了消息就计算出来。您只需在所需的确切时间显示它。这必须比投票更有效、更有效和更清洁。在收到通知时,您只需再次重置间隔。

这里的一些示例函数:

setTimeout 但在给定时间

通过阅读上面的帖子并在网上进行快速搜索,您似乎可以在一天一次的时间间隔内调用 setInterval 没有问题。卡尔文建议 25 天!

我就是这样处理它的。

编辑:由于发布了一件事,如果 PC 休眠 n 小时会发生什么?我需要自己测试一个类似的项目,所以一旦我有机会测试它,我会更新。

于 2012-04-06T22:52:46.077 回答