2014-03-28 85 views
0

我使用jQuery來重新加載頁面下面的代碼有什麼辦法刷新頁面只對jQuery的

<script type="text/javascript"> 
    $(document).ready(function(){ 
     setInterval(function() { 
       window.location.reload(); 
       }, 10000); 
    }) 
</script> 

特定的時間,但我有一些要求,我需要只刷新頁面並顯示一條消息,說:「發生了什麼問題」

那麼如何刷新/重新加載頁面只在特定的時間(6在我的情況下)使用jQuery?

+0

我的問題是如何重新加載頁面只有6次,如果我把分號放在文檔就緒函數的末尾,它只會重新加載6次? –

+0

你將不得不使用查詢字符串或cookie。沒有它們,JavaScript將不會在新頁面加載之前關心它所做的事情。 –

+1

使用cookie或存儲,然後在每次刷新時檢查它並相應地清除間​​隔。 – lshettyl

回答

3

基於LShetty的評論:

使用的localStorage的一個基本的例子可以在這裏看到http://coding.smashingmagazine.com/2010/10/11/local-storage-and-how-to-use-it/

例如沿線

<script type="text/javascript"> 
    $(document).ready(function(){ 
     var counter = localStorage.getItem('counter'); 
     if (counter == null) { 
     counter = 0; 
     } 
     counter++; 
     if (counter<=6) { 
     localStorage.setItem('counter', counter); 
     setInterval(function() { 
         window.location.reload(); 
         }, 10000); 
     } 
    }) 
</script> 

當然,你可以使用一個餅乾爲了同樣的目的,因爲你要只存儲一個計數器(波紋管的方式存儲在cookie中的數據的4K限制)的東西。例如,您可以利用以下文章中的createCookie和readCookie函數http://www.quirksmode.org/js/cookies.html

3

只是一個想法:你可以使用查詢字符串在頁面刷新之間傳遞計數器。像這樣:

<script type="text/javascript"> 
    var counter = 0; 
    $(document).ready(function(){ 
     counter = parseInt(getParameterByName("counter")); 
     if(counter < 6){ 
     setInterval(function() { 
       window.location.href = "http://" + window.location.host + window.location.pathname + '?counter=' + (counter + 1); 
       }, 10000); 
     } 
    }) 

//convenient method to get parameters from query string 
function getParameterByName(name) { 
    name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]"); 
    var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"), 
     results = regex.exec(location.search); 
    return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " ")); 
} 
</script> 
+0

可以輕鬆地手動更新查詢字符串參數。 –

+1

任何人都可以更新客戶端上的任何內容。你想說什麼?你也可以關閉瀏覽器。 –

+0

我的觀點是在服務器端或瀏覽器的cookie等存儲計數器。 –

0

這是怎麼回事?

$(function(){ 
if($('#sessioncounter').val() <= 6){ 
    setTimeout(function(){ 
    window.location = window.location; 
    }, 6000); 
} 
}); 

$('#sessioncounter').val()給出您保存在會話的每個負載中的計數器值。我不知道你用的是什麼樣的後臺語言..反正,做一個隱藏字段

<input type='hidden' id='sessioncounter' /> 

然後保存後重新加載每個櫃檯到這個領域。

+0

我正在使用django/python –

0

使用散列變量也適用於較舊的瀏覽器,而不使用本地存儲。

$(document).ready(function(){ 
     var count = parseInt(window.location.hash.replace('#','')) 
     if(!count){ 
      count = 0; 
     } 
     count++; 
     if(count < 7){ 
     setTimeout(function(){ window.location = 'http://'+window.location.hostname+window.location.pathname+'#'+count;}, 1000); 
     } 
});