我有这个问题,我不知道倒计时时间是否会继续,即使页面刷新,或者如果页面刷新,也会有一个警告框说“你确定要离开页面吗?”如果确定它会重定向到另一个页面?
这是我倒计时的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中的新... :(
答案 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,不一致地跨浏览器实现)或服务器上(您需要一种方法来识别您的用户,例如登录)或浏览器会话使其工作)。
此外,如果您确实选择使用这些方法中的任何一种,请记住也要存储当前时间。如果不这样做,则在用户返回页面后,您将没有上下文继续计数。