Javascript 如何使时间计数器继续刷新或离开页面

Javascript 如何使时间计数器继续刷新或离开页面,javascript,jquery,laravel-5,counter,Javascript,Jquery,Laravel 5,Counter,我在考试页面上实现了计时器计数。这就像是一个故事。但是当你在埃德莫多参加考试时,即使你刷新了它,计时器仍然在计时。在我的网站上,如果刷新页面,计时器也会刷新。我想要的就像edmodo一样,即使你刷新页面,它仍然会计数。请参阅我的代码以供参考 注: 我使用的是Laravel5.1/jQuery $(文档).ready(函数(){ //测验计时器(测验开始) var quick_timer=$('.quick timer').html(); var exact_time=parseInt($('.

我在考试页面上实现了计时器计数。这就像是一个故事。但是当你在埃德莫多参加考试时,即使你刷新了它,计时器仍然在计时。在我的网站上,如果刷新页面,计时器也会刷新。我想要的就像edmodo一样,即使你刷新页面,它仍然会计数。请参阅我的代码以供参考

注: 我使用的是Laravel5.1/jQuery

$(文档).ready(函数(){
//测验计时器(测验开始)
var quick_timer=$('.quick timer').html();
var exact_time=parseInt($('.timer value').html()-1);
var hrs_to_spend=parseInt(精确时间/60);
var mins_to_spend=parseInt(精确时间%60);
var秒到秒支出=60;
var timeIsUp=false;
var secs=0,
分钟=0,
hrs=0;
var秒零、分钟零、小时零、h秒零、m秒零、s秒零;
var setters=setInterval(函数(){
如果($('.quick timer').html()!='00:00:01'){
如果(秒到秒花费>0){
分秒必争--;
}

如果(秒到秒)花费将时间截止日期设置为日期时间。计算剩余时间,而不是花费时间


例如,如果现在的日期时间是“2017-08-22 08:00:01”(考试的开始时间),并且您希望在1小时后到期,则将日期时间截止日期设置为“2017-08-22 09:00:01”(这应该从服务器返回)。然后让javascript计数器重新计算现在的时间与具有刷新率的截止日期之间的差异(间隔)每秒。

将时间截止日期设置为日期时间。计算剩余时间,而不是花费的时间


例如,如果现在的日期时间是“2017-08-22 08:00:01”(考试的开始时间),并且您希望在1小时后到期,则将日期时间截止日期设置为“2017-08-22 09:00:01”(这应该从服务器返回)。然后让javascript计数器重新计算现在的时间与具有刷新率的截止日期之间的差异(间隔)每秒。

使用本地存储

1) 在localstorage中保存最后一次 像

window.onbeforeunload=function(){
setItem(“lastTime”,timevalue);
}

2) 如果本地存储中存在时间(如

savedTime = localStorage.getItem("lastTime");

mytimer.continueFrom(savedTime)
从该点开始拾取并继续计时

请看一下本地存储
使用本地存储

1) 在localstorage中保存最后一次 像

window.onbeforeunload=function(){
setItem(“lastTime”,timevalue);
}

2) 如果本地存储中存在时间(如

savedTime = localStorage.getItem("lastTime");

mytimer.continueFrom(savedTime)
从该点开始拾取并继续计时

请看一下本地存储
使用
Javascript无法实现这一点,Javascript代码有一个会话生存期,如果关闭该选项卡,它将终止该选项卡使用的所有资源,包括Javascript

您可以通过在中保存计数器+当前时间来尝试克服这一问题,并且每当启动JS代码时,检查本地存储中是否有这些值,并使用它们初始化计数器值

let counter = prevSavedCounter + (new Date()).getTime() - savedTime;

使用
Javascript
无法实现这一点,Javascript代码有一个会话生命周期,如果关闭该选项卡,它将终止该选项卡使用的所有资源,包括Javascript

您可以通过在中保存计数器+当前时间来尝试克服这一问题,并且每当启动JS代码时,检查本地存储中是否有这些值,并使用它们初始化计数器值

let counter = prevSavedCounter + (new Date()).getTime() - savedTime;

尝试cookie或localStoragetry cookie或localStoragetry cookie或localStoragetry如果其他人在我的网站上使用相同的考试登录到同一台电脑怎么办?考试有可能会继续。您需要在会话开始或结束时重置计时器。一旦考试在时间之前完成,用户注销,则计时器应重置为0:0:0,当新用户到来时,他将ogs in然后启动计时器,如果他重新加载,则再次使用本地存储中的数据。如果其他人在我的网站上使用相同的考试登录到同一台电脑,该怎么办?考试有可能会继续。您需要在会话开始或结束时重置计时器。一旦考试在时间之前完成,用户注销,则应重新设置计时器t到0:0:0,当新用户到来时,他登录,然后启动计时器,如果他重新加载,则再次使用localstorage中的数据。