我的意思是当我从20秒开始计时,然后关闭浏览器,计时器继续在后台运行,当我再次打开它时,计时器会像10秒一样直到0,然后从20秒开始重复,永远如此。
我已经在js中编写了这段代码,但问题是代码在客户端运行,这意味着当我退出并再次进入计时器时,计时器将再次从20开始。
<p id="demo"></p>
<script>
var rtime = 4;
const irtime = 4; // initial time for resetting
function rF(){
setTimeout(() => {
var x = document.getElementById("demo").innerHTML = rtime;
if(rtime > 0){
rtime-- ;
rF();
}else{
rtime = irtime;
rF();
}
}, 1000);
}
rF();
</script>
您可以将之前的时间存储在localStorage
中,然后在页面加载时检索时间并将其分配给rtime
:
<p id="demo"></p>
<script>
var rtime = localStorage.getItem("last-time");
const irtime = 4; // initial time for resetting
rtime = !rtime ? 4 : rtime;
function rF() {
setTimeout(() => {
var x = document.getElementById("demo").innerHTML = rtime;
if (rtime > 0) {
rtime--;
rF();
} else {
rtime = irtime;
rF();
}
localStorage.setItem("last-time", rtime)
}, 1000);
}
rF();
</script>
演示:https://jsfiddle.net/Spectric/h8kgjo5d/