Javascript 在选项卡完全关闭时保持setInterval运行
试图制作一个使用setInterval(基于厘秒)的实时时钟,但我希望它在选项卡未打开或计算机关闭时运行。这可能吗?如果你听说过cookie clicker游戏,我敢肯定它至少在标签完全关闭时运行,那么我如何复制它,如果我不能,还有其他方法可以用来制作数字时钟吗?当标签关闭或机器关闭时,不可能运行代码。最好是定期将信息保存到Javascript 在选项卡完全关闭时保持setInterval运行,javascript,time,setinterval,clock,Javascript,Time,Setinterval,Clock,试图制作一个使用setInterval(基于厘秒)的实时时钟,但我希望它在选项卡未打开或计算机关闭时运行。这可能吗?如果你听说过cookie clicker游戏,我敢肯定它至少在标签完全关闭时运行,那么我如何复制它,如果我不能,还有其他方法可以用来制作数字时钟吗?当标签关闭或机器关闭时,不可能运行代码。最好是定期将信息保存到localStorage,然后每当脚本再次运行时,从localStorage检索保存的信息,并运行所有必要的计算以获得最新信息。或者,如果它像日期一样简单,您可以在每次打开选
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();
const info=localStorage.savedInfo
? parse(localStorage.savedInfo)
:{count:0,date:date.now()};
const now=Date.now();
如果(信息日期<现在){
info.count+=数学楼层((现在-info.date)/1000);
info.date=现在;
}
函数tick(){
info.count++;
控制台日志(信息计数);
info.date=date.now();
localStorage.savedInfo=JSON.stringify(info);
设置超时(勾号,1000);
}
勾选();
Date.now()返回什么,这是一个很长的数字,你知道它写的是什么吗?毫秒、厘米秒等。Date.now()
返回自历元以来的毫秒数。