javascript - 倒数计时器启动和停止

问题描述:

我创建了在线考试系统。javascript - 倒数计时器启动和停止

我的问题:我点击申请按钮比倒计时器开始和有时浏览器页面关闭后,我点击相同的考试名称,然后倒数计时器继续,不开始开始。下面的截图

screenshot-1

screenshot -2

查看:

<h2><p style="float: right" id="countdown"></p></h2> 

<a href="<?php echo base_url(); ?>student/Examinations/apply_examinations/<?php echo $value['examination_test_id']; ?>" class="btn btn-primary" id="apply" onclick="resetCountdownInLocalStorage();">Apply</a> 

    <script> 
     $(document).ready(function() { 
    $examination_test_id = $("#examination_test_id").val(); 
      $time_limit = $("#time_limit").val(); 
      var d = new Date($time_limit); 
      var hours = d.getHours(); 
      var minute = d.getMinutes(); 
      var minutes = hours * 60 + minute; 
      var seconds = 60 * minutes; 

      if (typeof (Storage) !== "undefined") { 
       if (sessionStorage.seconds) { 
        seconds = sessionStorage.seconds; 
       } 
      } 
      function secondPassed() { 
       var hours = Math.floor(seconds/3600); 
       var minutes = Math.floor((seconds - (hours * 3600))/60); 
       // var remainingSeconds = seconds - (hours * 3600) - (minutes * 60); 
       var remainingSeconds = seconds % 60; 

       if (remainingSeconds < 10) { 
        remainingSeconds = "0" + remainingSeconds; 
       } 
       if (minutes < 10) { 
        minutes = "0" + minutes; 
       } 

       if (typeof (Storage) !== "undefined") { 
        sessionStorage.setItem("seconds", seconds); 
       } 

       document.getElementById('countdown').innerHTML = hours + ":" + minutes + ":" + remainingSeconds; 

       if (seconds == 0) { 
        clearInterval(myVar); 
        document.getElementById('countdown').innerHTML = alert('Timeout'); 
        window.location.href = base_url + "student/Examinations/check_answer/" + $examination_test_id; 

        if (typeof (Storage) !== "undefined") { 
         sessionStorage.removeItem("seconds"); 
        } 
       } else { 
        seconds--; 
       } 
      } 
      var myVar = setInterval(secondPassed, 1000); 
     }); 

function resetCountdownInLocalStorage() { 
     sessionStorage.removeItem("seconds"); 
    } 
    </script> 
+0

我目前的形式并不完全了解你的问题。但是当你关闭浏览器并重新打开它时,你的'状态'就会丢失。您正在有效地运行整个程序。如果您想在重新打开该页面后“继续”,则需要将该信息存储在某处 –

+0

@DylanMeeus请编写代码 – kishan123

+0

@DylanMeeus首先查看屏幕截图,然后单击应用按钮,然后定时器启动并在某个时间之后关闭浏览器页面几分钟我点击相同的考试名称申请然后倒数计时器开始继续,不开始求助 – kishan123

它可能会依赖于浏览器,根据该link

浏览的寿命上下文可能与实际用户代理进程本身的生存期无关,因为用户代理可能在重新启动后支持 恢复会话。

您可能必须清理选项卡上的会话stroage close我认为。

+0

我点击应用按钮,所以应用按钮火灾onclick事件,这个事件在第二会删除sessionstorage – kishan123

+0

首先看截图,然后点击应用按钮,然后计时器开始和某个时候浏览器页面关闭,几分钟后,我点击相同的考试名称申请然后倒数计时器开始继续,不开始求生 – kishan123

+0

很难帮助你没有更多的细节。你是否点击应用浏览?你留在同一页?你打开一个新标签? – Mathieu