javascript - 即使在“另一页”或“浏览器刷新”中,如何让 setInterval countUp 计时器继续计数?
问题描述
我尝试在我的标题网页上创建一些“访客计数计时器”。但是,当我选择另一个选项卡时,计时器会从 00:00:00 再次重新启动。即使在“另一页”或“浏览器刷新”中,是否有任何解决方案让它继续计数?我不确定如何将sessionStorage添加到我当前的代码中。
有人愿意为此提供帮助吗?
谢谢
var sec = 0;
function pad ( val ) { return val > 9 ? val : "0" + val; }
setInterval( function(){
document.getElementById("seconds").innerHTML=pad(++sec%60);
document.getElementById("minutes").innerHTML=pad(parseInt(sec/60%60,10));
document.getElementById("hours").innerHTML=pad(parseInt(sec/3600%60,10));
}, 1000);
<span id="hours">00</span>:<span id="minutes">00</span>:<span id="seconds">00</span>
解决方案
您的解决方案是使用本地存储:
var sec = 0;
tmpSec = localStorage.getItem('secs')
if (tmpSec != null) {
sec = parseInt(tmpSec,10);
}
function pad ( val ) { return val > 9 ? val : "0" + val; }
setInterval( function(){
++sec
localStorage.setItem('secs', sec)
document.getElementById("seconds").innerHTML=pad(sec%60);
document.getElementById("minutes").innerHTML=pad(parseInt(sec/60%60,10));
document.getElementById("hours").innerHTML=pad(parseInt(sec/3600%60,10));
}, 1000);
这是保存在 localStorage https://github.com/syronz/micro-games/blob/master/02%20idle%20game/progress.html中的间隔示例
推荐阅读
- selenium - 在树莓派操作系统上运行 InstaPy 时如何修复 geckodriver 错误?
- .net - 管道 4x 进程“msbuild.exe”以代码“1”退出
- spring-boot - Docker 中的 Spring Boot 不读取 bootstrap.yml 文件
- google-chrome-extension - Chrome 扩展中的内容安全“拒绝加载媒体”错误(清单 v3)
- javascript - 当我从孩子调用它时,useState 值会发生变化
- .net - 在项目负载上自动化 dotnet 监视?
- google-cloud-dataflow - 将 Dataflow 与 BigQueryIO.Write.Method.STORAGE_WRITE_API 结合使用的示例
- css - 透视原点和消失点
- python-3.x - 为什么我没有得到 logger.info 的任何输出
- java - 将外部 groovy 类包含到源集中