2014-03-05 86 views
0

这是我正在使用的倒计时器的代码。如果用户重新加载页面,倒计时将再次开始。 我希望倒数第一次用户访问该页面后继续运行,而不管他是否关闭该页面。请提出一种方法。我认为创建会话可能会有帮助,但我对会话不了解。倒计时器不应该停止

<span id="countdown" class="timer"></span> 
<script> 
var seconds =120; 
function secondPassed() { 
var minutes = Math.round((seconds - 30)/60); 
var remainingSeconds = seconds % 60; 
if (remainingSeconds < 10) { 
    remainingSeconds = "0" + remainingSeconds; 
} 
document.getElementById('countdown').innerHTML = minutes + ":" + remainingSeconds; 
if (seconds == 0) { 
    clearInterval(countdownTimer); 
    document.getElementById('bonus').innerHTML = "Buzz Buzz"; 
} else { 
    seconds--; 
} 
} 

var countdownTimer = setInterval('secondPassed()', 1000); 
</script> 
+0

当他们第一次访问计数器时,你可以放弃一个cookie。在随后的访问中,只需抵消此时的倒计时。 – Stu

+2

由于您不知道用户将在哪一点关闭窗口或刷新页面,因此您需要将计数器保存在一些持久性存储中,例如cookie(最佳跨浏览器解决方案),本地存储等。下一次页面加载从上次保存的值开始 – Amnon

回答

0

问题并不完全完整。你需要一个“永久”或“他第一次访问页面后的一段时间”的计数器。对于第一个,你需要指望服务器端(例如,你可以创建一个数据库 - 或一个文件,或者任何你喜欢的东西来保存),并以某种方式识别用户,并获得第一次访问。然后每次用户登录时发回这个信息,并在js中依靠客户端计数,就像你一样。

对于第二种方法,您可以发送带有首次访问时间戳的cookie,将该信息保存在会话中,并在用户每次访问该页面时使用该信息。

+0

这就是我想要的:一旦用户进入站点,倒计时应该继续,而不管网页是重新加载还是关闭。我不希望计时器从他上次离开页面开始重新开始,它应该继续下去。另外,我尝试了解W3学校的cookies。我无法得到很多帮助。如果我能得到一个示例代码,那会很好 – Rushi