在选项卡完全关闭时保持 setInterval 运行
Keep setInterval running while tab is completely closed
尝试制作一个使用 setInterval(基于厘秒)的实时时钟,但我希望它在选项卡未打开甚至计算机关闭时 运行。这可能吗?如果您听说过游戏 cookie clicker,我很确定至少 运行s 当标签完全关闭时,我该如何复制它,如果我不能,还有其他方法吗我可以用来制作数字时钟吗?
无法在选项卡关闭或机器关闭时运行编码。您可以做的最好的事情是定期将信息保存到 localStorage
,然后,每当脚本再次 运行 时,从 localStorage
和 运行 所有计算中检索保存的信息有必要了解最新情况。或者,如果它像日期一样简单,您可以在每次打开选项卡时检查 Date.now()
。
这是一个非常简单的实现:
const info = localStorage.savedInfo
? JSON.parse(localStorage.savedInfo)
: { count: 0, date: Date.now() };
const now = Date.now();
if (info.date < now) {
info.count += Math.floor((now - info.date) / 1000);
info.date = now;
}
function tick() {
info.count++;
console.log(info.count);
info.date = Date.now();
localStorage.savedInfo = JSON.stringify(info);
setTimeout(tick, 1000);
}
tick();
尝试制作一个使用 setInterval(基于厘秒)的实时时钟,但我希望它在选项卡未打开甚至计算机关闭时 运行。这可能吗?如果您听说过游戏 cookie clicker,我很确定至少 运行s 当标签完全关闭时,我该如何复制它,如果我不能,还有其他方法吗我可以用来制作数字时钟吗?
无法在选项卡关闭或机器关闭时运行编码。您可以做的最好的事情是定期将信息保存到 localStorage
,然后,每当脚本再次 运行 时,从 localStorage
和 运行 所有计算中检索保存的信息有必要了解最新情况。或者,如果它像日期一样简单,您可以在每次打开选项卡时检查 Date.now()
。
这是一个非常简单的实现:
const info = localStorage.savedInfo
? JSON.parse(localStorage.savedInfo)
: { count: 0, date: Date.now() };
const now = Date.now();
if (info.date < now) {
info.count += Math.floor((now - info.date) / 1000);
info.date = now;
}
function tick() {
info.count++;
console.log(info.count);
info.date = Date.now();
localStorage.savedInfo = JSON.stringify(info);
setTimeout(tick, 1000);
}
tick();