頁面自動刷新常用方法


在javascript編程中,經常在更新數據之后用到location.reload()實現頁面刷新。

reload() 方法用於重新加載當前的文檔。
如果該方法沒有規定參數,或者參數是 false,它就會用 HTTP 頭 If-Modified-Since 來檢測服務器上的文檔是否已改變。如果文檔已改變,reload() 會再次下載該文檔。如果文檔未改變,則該方法將從緩存中裝載文檔。這與用戶單擊瀏覽器的刷新按鈕的效果是完全一樣的。

我們都知道客戶端瀏覽器是有緩存的,里面存放之前訪問過的一些網頁文件。
其實緩存里存儲的不只是網頁文件,還有服務器發過來的該文件的最后服務器修改時間。
If-Modified-Since是標准的HTTP請求頭標簽,在發送HTTP請求時,把瀏覽器端緩存頁面的最后修改時間一起發到服務器去,服務器會把這個時間與服務器上實際文件的最后修改時間進行比較。
如果時間一致,那么返回HTTP狀態碼304(不返回文件內容),客戶端接到之后,就直接把本地緩存文件顯示到瀏覽器中。
如果時間不一致,就返回HTTP狀態碼200和新的文件內容,客戶端接到之后,會丟棄舊文件,把新文件緩存起來,並顯示到瀏覽器中。

我們知道JSP頁面最后都必須編譯成HTML文件,你的JSP頁面時間每次請求的都不一樣 ,等於修改了文件,所以緩存和服務器的文件的修改時間是不一致的 ,就會重新刷新了。

所以:

location.reload() //默認fasle,從客戶端緩存里去當前有頁面。

location.reload(true) //瀏覽器重新從服務器請求資源,在http請求頭中不會包含緩存標記。以 GET 方式,從服務端取最新的頁面, 相當於客戶端點擊 F5("刷新")

 

還有一個location.replace()方法:location.replace(URL) 

這個方法通過指定URL替換當前緩存在歷史里(客戶端)的項目,因此當使用replace方法之后,你不能通過“前進”和“后退”來訪問已經被替換的URL。

 

在實際應用時,重新刷新頁面時,我們通常使用: location.reload() 或者是 history.go(0) 來做。因為這種做法就像是客戶端點F5刷新頁面,所以頁面的method="post"時,會出現"網頁過期"的提示。那是因為Session的安全保護機制。

 

Javascript刷新頁面的幾種方法:

history.go(0)  //<a href="javascript:history.go(-1)">返回上一頁</a> 
location.reload()
location=location
location.assign(location)
document.execCommand('Refresh')
window.navigate(location)
location.replace(location)
document.URL=location.href

自動刷新頁面的方法-代碼示例:

1,頁面自動刷新:把如下代碼加入<head>區域中
<meta http-equiv="refresh" content="20"> 其中20指每隔20秒刷新一次頁面
2,頁面自動跳轉:把如下代碼加入<head>區域中
<meta http-equiv="refresh" content="20;url=http://www.jFinal.cn"> 其中20指隔20秒后跳轉到http://www.jFinal.cn
3,頁面自動刷新js
<script language="JavaScript">
function myrefresh()
{
       window.location.reload();
}
setTimeout('myrefresh()',1000); //指定1秒(1000ms)刷新一次
</script>

JS刷新框架的腳本語句
//如何刷新包含該框架的頁面用  
<script language=JavaScript>
   parent.location.reload();
</script>  

//子窗口刷新父窗口
<script language=JavaScript>
    self.opener.location.reload();  //opener窗口即父窗口
</script>
(或 <a href="javascript:opener.location.reload()">刷新</a>   )

//如何刷新另一個框架的頁面用  
<script language=JavaScript>
   parent.另一FrameID.location.reload();
</script>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM