【问题标题】:Keep setInterval running while tab is completely closed在选项卡完全关闭时保持 setInterval 运行
【发布时间】:2018-12-03 00:34:12
【问题描述】:

尝试制作一个使用 setInterval(基于厘秒)的实时时钟,但我希望它在选项卡未打开甚至计算机关闭时运行。这甚至可能吗?如果您听说过游戏 cookie 点击器,我很确定它至少会在选项卡完全关闭时运行,所以我该如何复制它,如果我不能,还有其他方法可以用来制作吗数字时钟?

【问题讨论】:

    标签: javascript time setinterval clock


    【解决方案1】:

    标签关闭或机器关闭时无法运行代码。您可以做的最好的事情是定期将信息保存到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();
    

    https://jsfiddle.net/gn9128ea/1/

    【讨论】:

    • Date.now() 返回什么,很长的数,你知道它写成什么吗?毫秒、厘秒等
    • Date.now() 返回自纪元以来的毫秒数。
    猜你喜欢
    • 2015-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多