2014-01-20 544 views
2

有沒有人知道如何刷新頁面只有一次在JavaScript 5秒後?如何在JavaScript 5秒後刷新頁面一次?

我有以下腳本5秒後刷新頁面:

setTimeout(function() { 
    window.location.reload(1); 
}, 5000); // After 5 secs 

但不知何故,這是刷新每5秒,而不是第一個5秒後只有一次的時間。有誰知道如何解決這個問題?

+0

確保它沒有每次重新加載時都不會再次運行。 – SLaks

+0

您可以設置一個cookie來查看它是否已經運行。如果cookie已設置,請勿創建超時。更好的是,5秒後使用AJAX請求並重新加載頁面上的數據。 –

+0

[第一頁加載後一次頁面刷新]的可能重複(http://stackoverflow.com/questions/6985507/one-time-page-refresh-after-first-page-load) –

回答

0

您需要一種方法來識別重新加載的頁面。最簡單的方法(imo)將是控制這個服務器端。檢查一個get變量幷包含js代碼(如果它不存在)。

此外,我看到人們建議cookies。我不喜歡使用餅乾這樣的小事。

你可以嘗試這樣的:

// Get all get-variables 
var queryDict = {} 
location.search.substr(1).split("&").forEach(function(item) {queryDict[item.split("=")[0]] = item.split("=")[1]}) 

// Check if reloaded is set 
if (queryDict['reloaded'] == 'undefined') { 
    // Check if url contains any get-variables 
    if (Object.keys(queryDict).length == 0) { 
     var redirect = document.URL + '?reloaded'; 
    } 
    else { 
     var redirect = document.URL + '&reloaded'; 
    } 

    // The timeout 
    setTimeout(function() { 
     window.location = redirect; 
    }, 5000); 
} 
0

你需要保持這個腳本做這樣的事情插入或updations或任何其他的任務,然後它會在5秒後重新載入網頁一次後。它適用於我上傳圖片時,我上傳我的文件後保存這個腳本,而不是保存在window.load或documents.ready中,它的功能就像一個魅力。這是我的腳本。也許這可以幫助您解決問題

<script type="text/javascript"> 
$(window).load(function() { 
     $('#<%=FileUpload1.ClientID%>').uploadify({ 
     'swf': 'fy/uploadify.swf', 
     'cancelImg': 'fy/uploadify-cancel.png', 
     'buttonText': 'Browse Files', 
     'uploader': 'Gallery.ashx', 
     'folder': 'uploads', 
     'fileDesc': 'Image Files', 
     'fileExt': '*.jpg;*.jpeg;*.gif;*.png', 

     'multi':true, 
     'auto': false, 

     'formData':{'paid':<%= Request.QueryString["PhotoAlbumID"] %>}, 
     'onUploadStart': function (file) { 
      $("#<%=FileUpload1.ClientID%>").uploadify("settings", 'Txt', $('#password').val()); 

      $(document).ready(function() { 


      }); setTimeout(function() { window.location=window.location;},3000); 

     } 
     }); 
}); 



</script> 
0

這是目前爲止最簡單,最輕的解決方案:

setTimeout(function() { 
    if(window.location.hash != '#r') { 
     window.location.hash = 'r'; 
     window.location.reload(1); 
    } 
}, 5000); // After 5 secs 
1

我認爲更好的辦法是檢查document.refererdocument.location

if (document.referrer !== document.location.href) { 
    setTimeout(function() { 
     document.location.reload() 
    }, 5000); 
} 

你比較可以在jsfiddle中試試這個:https://jsfiddle.net/ga0Lrurj/