簡體   English   中英

頁面刷新時繼續計時-JavaScript

[英]Continue time when page refreshes - javascript

我遇到了這個問題,我不知道是否有辦法即使刷新頁面也可以繼續倒數計時,或者如果刷新頁面,則會出現一個警告框,提示“您確定要離開頁面嗎?” 如果可以,它將重定向到另一個頁面?

這是我倒計時的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>

刷新頁面后,如何繼續該時間甚至刷新頁面?

請help..im是javascript的新功能。

簡短答案...不。 您可以在刷新之前發送時間2服務器,但這是不可靠的(如果我按ctrl + alt + del並殺死瀏覽器進程怎么辦)?

這需要使用cookie或某種服務器端腳本。 您可以使用cookie來存儲計數器值,並且在頁面加載/刷新后,它應該檢查cookie是否存在。 如果是這樣,那么您將希望加載該值並使計數器從該值恢復。

使用服務器端腳本可以應用相同的核心概念。 無論是將該值存儲在數據庫中,還是使用套接字在實時腳本中維護該值。

如果您不需要將頁面哈希用於其他目的,而只是在自己的網站中導航,則可以將計時器的時間放入window.location.hash如果您只是重新加載頁面或將其放入url中)您正在導航至myurl.com/somepage.html#yourtime 請記住,如果您正在使用需要此值的庫,正在異地鏈接或僅使用錨,則此方法將無效。

有關如何操作此值,請參見在jQuery中更改哈希而不重新加載

您需要記住的是,Javascript中沒有“狀態”,因此任何頁面刷新都將導致您的所有腳本完全重新加載。 這樣一來,您就可以將持久性值“存儲”在cookie,localstorage(html5,在瀏覽器中不一致實現)或服務器上(您需要一種方法來識別用戶,例如登錄名)或瀏覽器會話以使其正常工作)。

此外,如果您選擇使用這些方法中的任何一種,請記住也要存儲當前時間。 否則,用戶返回頁面后,將沒有上下文繼續計數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM