2014-01-09 62 views
0

我有這個問題,我不知道是否有方法倒計時的時間將繼續,即使頁面刷新,或者如果頁面刷新有一個警告框,說:「你確定你想離開頁面?「如果確定它會重定向到另一個頁面?頁面刷新時的繼續時間 - 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> 

如何繼續那個時候連頁面刷新或重定向到頁面時刷新另一個頁面?

請在JavaScript help..im新.. :(

+1

*「即使頁面刷新或重定向到另一個頁面,如何繼續該時間」* - 不適用於在瀏覽器中運行的計數器。 – Tomalak

+4

您必須使用cookie或執行倒計時服務器端。 –

+0

用於cookie的+1,在服務器端實現倒計時對我來說看起來很蹩腳,但這取決於問題,如果服務器端的倒計時耗盡,還有很多工作要做,以刷新客戶端的頁面 –

回答

0

簡短的回答......不,你可以刷新之前發送時間2服務器,但是這是不可靠的(什麼,如果我CTRL U +做alt + del和kill瀏覽器進程)?

0

這是需要使用cookie或某種服務器端腳本的東西,您可以使用cookie存儲計數器值,並且在頁面加載/刷新它應該檢查cookie是否存在,如果存在,你會想要加載該值,並讓你的計數器恢復該值

相同的核心公司ncept將使用服務器端腳本來應用。無論您是將該值存儲在數據庫中,還是使用套接字來保持實時腳本中的值。

0

如果您不需要將頁面哈希用於其他目的,而只是在您自己的站點內導航,則可以將計時器的時間放入window.location.hash(如果您只是重新加載頁面)或URL您正在導航爲myurl.com/somepage.html#yourtime。請記住,如果您正在使用需要此值的庫,正在異地進行鏈接,或者只是使用錨點,則這不起作用。

有關如何操作此值的信息,請參見Change hash without reload in jQuery

你需要記住的是,Javascript中沒有「狀態」,所以任何頁面刷新都會導致你的所有腳本完全重新加載。這使得你需要將你的永久值「存儲」在cookie中,存儲在localstorage中(html5,在瀏覽器中不一致地實現),或者在你的服務器上(你需要一種方法來識別你的用戶,例如登錄或者瀏覽器會話以使其工作)。

此外,如果您確實選擇使用這些方法中的任何一種,請記住也要存儲當前時間。如果你不這樣做,你將沒有上下文來在用戶返回頁面後繼續計數。