问:当您在浏览器中单击刷新时,如何防止倒数计时器重新启动
<div id="quiz-time-left"> </div>
<script type="text/javascript">
var total_seconds = 60*10 ;
var minutes = parseInt(total_seconds/60);
var seconds = parseInt(total_seconds%60);
function countDownTimer(){
if(seconds < 10){
seconds= "0"+ seconds ;
}if(minutes < 10){
minutes= "0"+ minutes ;
}
document.getElementById("quiz-time-left").innerHTML
= "Time Left :"+minutes+"minutes"+seconds+"seconds";
if(total_seconds <= 0){
setTimeout("document.quiz.submit()",1);
}else{
total_seconds = total_seconds -1 ;
minutes = parseInt(total_seconds/60);
seconds = parseInt(total_seconds%60);
setTimeout("countDownTimer()",1000);
}
}
setTimeout("countDownTimer()",1000);
function finishpage(){
alert("unload event detected!");
document.quiz.submit();
}
window.onbeforeunload= function() {
setTimeout('document.quiz.submit()',1);
}
</script>
答:根据您的代码,您正在使用total_seconds = 60 * 10进行初始化,并且在每次刷新后,total_seconds再次设置为恒定值。
您应该将最后一个计数器值存储在localStorage中,并使用更新后的localStorage值初始化total_seconds。
if(localStorage.getItem(“ total_seconds”)){
var total_seconds = localStorage.getItem(“ total_seconds”);
}其他{
var total_seconds = 60 * 10;
}
var minutes = parseInt(total_seconds / 60);
var seconds = parseInt(total_seconds%60);
函数countDownTimer(){
if(秒<10){
seconds =“ 0” +秒;
} if(分钟<10){
minutes =“ 0” +分钟;
}
document.getElementById(“ quiz-time-left”)。innerHTML =“剩余时间:” +分钟+“分钟” +秒+“秒”;
if(total_seconds <= 0){
setTimeout(“ document.quiz.submit()”,1);
}其他{
total_seconds = total_seconds -1;
分钟= parseInt(total_seconds / 60);
秒= parseInt(total_seconds%60);
localStorage.setItem(“ total_seconds”,total_seconds)
setTimeout(“ countDownTimer()”,1000);
}
}