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

时间:2015-10-11 08:20:32

标签: javascript php timer

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

<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>

2 个答案:

答案 0 :(得分:0)

对于您要实现的目标,您可以将计时器的起点存储在localStorage或浏览器的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. } 中。

stdClass Object ( 
   [0] => Array ( [id] => 5353 [month] => 05 ) 
   [1] => Array ( [id] => 5542 [month] => 06 ) 
   [2] => Array ( [id] => 4676 [month] => 06 ) 
   [3] => Array ( [id] => 5542 [month] => 07 ) 
   [4] => Array ( [id] => 5542 [month] => 09 ) 
) 

请注意,window.localStorage不能使用旧浏览器,并且您可能需要执行与Cookie类似的操作。

答案 1 :(得分:-1)

我的意见是

  1. 将开始时间存储在数据库中(例如,mysql)。

  2. 或者在重新加载或刷新时将开始时间存储在用户会话中。只需将时间拉出会话并继续计算。

  3. 使用Cookie。但我推荐使用mysql或session,cookie可以简单地进行操作。