如何使定时器保持滴答时,窗口关闭
How to make a timer keep on ticking when window is closed
是否有可能有一个javascript定时器继续前进,即使当窗口关闭?我能用localstorage保存这些东西吗?
谁能解释一下我该怎么做?
例如:当有人在我的网站上点击一个按钮时,我想让这个按钮禁用一个小时。
setTimeOut(func, 1000 * 60 * 60);
计时器当然会在我离开页面时停止。但是,如果有人离开实际页面,我希望它继续滴答。
在localStorage中存储用户按下按钮时的时间戳(+new Date或Date.now)。在页面加载时立即读取它,如果Date.now() - timestampInLocalStorage为正,则setTimeout(enableButton, delta)否则立即启用enableButton。
请注意,用户当然可以修改本地时间来绕过此保护。
取决于你想做什么,有新的Service Worker API可以在选项卡关闭后执行任务。我只想说,浏览器只支持现代浏览器。
注意,在用户关闭选项卡之后运行代码通常会破坏你与用户之间的契约。"当我关闭选项卡时,我不想再与您进行任何交互",所以在尝试注册service worker之前,请确保将此信息传达给用户。
我要补充Madara所说的作为回答,因为我还不能评论。
一些浏览器会让你通过Service Work API来做这件事,但是当标签进入休眠状态时,一些浏览器已经开始"休眠"了,比如Chrome。Chrome会让一个不活跃的标签页在离开一小段时间后进入睡眠状态。所以即使你在他们离开前开始计数然后不知何故检测到他们离开了计数也不会准确。正因为如此,要让它在所有浏览器上工作而不诉诸黑客是非常困难的。
所以这是合理的…但你真的不应该这么做。你会花很多时间找工作。现实情况是,防止这种情况发生符合用户的最大利益,因此您将与浏览器本身作斗争。
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 防止Iframe窗体在新窗口中打开
- 内部分区字体大小获胜'调整浏览器窗口大小时不会随媒体查询而更改
- 调整窗口大小时,可拖动的对象会出现在容器外部
- Javascript排序的图像弹出窗口..可以't单独弹出
- 窗口大小html css
- 弹出窗口出现,然后退出
- 为什么不是't窗口.恢复正常工作吗?(javascript/jquery)
- Javascript更新孙窗口中的表单元素
- 如何在选项卡上定义属性'的主窗口对象
- 世界的时钟并没有滴答作响
- 尽管我努力了,递归时钟调用仍在滴答作响
- 拉斐尔图书馆的Javascript Stopwatch赢得't连续滴答作响
- 茉莉花时钟滴答;火狐:无法触发Q.delay方法
- 我如何同步滑块与滴答,使其响应
- 航次绘图改变滴答标记时间标签
- Angular.js倒计时定时器不滴答
- D3js时间轴滴答持续时间动态设置
- 追加对象到DOM,缓冲事件直到下一个滴答
- 如何使定时器保持滴答时,窗口关闭