页面刷新时继续时间 - javascript

时间:2014-01-09 16:30:36

标签: javascript jquery ajax

我有这个问题,我不知道倒计时时间是否会继续,即使页面刷新,或者如果页面刷新,也会有一个警告框说“你确定要离开页面吗?”如果确定它会重定向到另一个页面?

这是我倒计时的ajax脚本

 <script type="text/javascript">                          
window.onload = function()
{
    countDown('timeLimit', 'sample.html', 60); 
}

function countDown(elID, output, seconds)
{
     var elem = document.getElementById(elID),
         start = new Date().getTime(), end = start+seconds*1000,
         timer = setInterval(function() {

         var now = new Date().getTime(), timeleft = end-now, timeparts;

         if( timeleft < 0) {
             document.location.href = output;
             clearInterval(timer);
         }
         else {
             timeparts = [Math.floor(timeleft/60000),Math.floor(timeleft/1000)%60];
             if( timeparts[1] < 10) timeparts[1] = "0"+timeparts[1];
             elem.innerHTML = "Time left: "+timeparts[0]+":"+timeparts[1];

         }
     } ,250); // the lower this number, the more accurate the timer. 250 recommended 
  }
</script>

如果在页面刷新时,即使页面刷新或重定向到另一页面,如何继续?

请帮助..我在javascript中的新... :(

3 个答案:

答案 0 :(得分:0)

简短回答......不。您可以在刷新之前发送时间2服务器,但这是不可靠的(如果我按Ctrl + Alt + del并杀死浏览器进程你会怎么做?)

答案 1 :(得分:0)

这需要使用cookie或某种服务器端脚本。您可以使用cookie来存储计数器值,并在页面加载/刷新时检查cookie是否存在。如果是,则您需要加载该值并让计数器从该值恢复。

使用服务器端脚本将应用相同的核心概念。是将该值存储在数据库中,还是使用套接字来维护实时脚本中的值。

答案 2 :(得分:0)

如果您不需要将页面哈希用于其他目的,并且只在自己的站点中导航,那么如果您只是重新加载页面,则可以将计时器的时间设置为window.location.hash,或者进入您正在导航到myurl.com/somepage.html#yourtime的网址。请记住,如果您使用的是需要此值的库,非现场链接,或者只是使用锚点,则无法使用。

请参阅Change hash without reload in jQuery了解如何操纵此值。

您需要记住的是,Javascript中没有“状态”,因此任何页面刷新都会导致所有脚本完全重新加载。这使得您需要将持久值“存储”在cookie,localstorage(html5,不一致地跨浏览器实现)或服务器上(您需要一种方法来识别您的用户,例如登录)或浏览器会话使其工作)。

此外,如果您确实选择使用这些方法中的任何一种,请记住也要存储当前时间。如果不这样做,则在用户返回页面后,您将没有上下文继续计数。