首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使我的计时器在浏览器刷新和关闭时不重置?

问如何使我的计时器在浏览器刷新和关闭时不重置?
EN

Stack Overflow用户
提问于 2015-10-11 16:20:32
回答 2查看 749关注 0票数 0

我正在制作一个测验计时器,其中包含分钟和秒的计时器,我这里的问题是当我按刷新时计时器重新启动到它的原始时间。如何在单击刷新按钮或关闭浏览器时不重置计时器?我对获取开始的时间有点困惑+(5分钟,测验的样本时间),然后存储到数据库,然后回显它,使其计时器

代码语言:javascript
复制
<font size="6">
<div style="font-weight: bold" id="quiz-time-left"></div>

<script type="text/javascript">
var max_time = <?php echo $rows['q_time'] ?>*60;
var c_seconds  = 0;
var total_seconds =max_time;
max_time = parseInt(total_seconds/60);
c_seconds = parseInt(total_seconds%60);
document.getElementById("quiz-time-left").innerHTML='Time Left: ' + max_time + ' minutes ' + c_seconds + ' seconds';
function init(){
document.getElementById("quiz-time-left").innerHTML='Time Left: ' + max_time + ' minutes ' + c_seconds + ' seconds';
setTimeout("CheckTime()",999);
}
function CheckTime(){
document.getElementById("quiz-time-left").innerHTML='Time Left: ' + max_time + ' minutes ' + c_seconds + ' seconds' ;
if(total_seconds <=0){
setTimeout('document.getElementById("quiz").submit()',1);

    } else
    {
total_seconds = total_seconds -1;
max_time = parseInt(total_seconds/60);
c_seconds = parseInt(total_seconds%60);
setTimeout("CheckTime()",999);
}

}
init();
</script>
</font>
EN

回答 2

Stack Overflow用户

发布于 2015-10-11 16:30:11

对于您试图实现的目标,您可以将计时器的起始点存储在cookie或浏览器的localStorage中。

代码语言:javascript
复制
if (window.localStorage["start_time"]){
// continue from start time.
//reset your timer to the time passed since start_time
}else{
//first time load. reset your timer to 0. 

}

请注意,window.localStorage不能与较旧的浏览器一起工作,您可能需要对cookies执行类似的操作。

票数 0
EN

Stack Overflow用户

发布于 2015-10-11 16:27:23

我的观点是

  1. 将开始时间存储在数据库中(例如mysql)。
  2. 或在重新加载或刷新时将开始时间存储在用户会话中。只需从会话中提取时间并继续计数。
  3. 使用cookie。但我推荐mysql或会话,cookie可以简单地被操纵。
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33062917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档