為解決浏覽器後退按鈕禁用的方法,在網上搜尋了幾個方法,雖然可用但是沒有太完美的...
1、
<script language="JavaScript">
javascript:window.history.forward(1); //我目前先用着這個
</script>
利用JS産生一個“前進”的動作,以抵消後退功能,這種方法應該是最簡潔的,并且不需要考慮使用者連點兩次或多次“後退”的情況,缺點是當使用者端禁用了JavaScript之後即失效。
2、
<A HREF="logout.do" οnclick="javascript:location.replace(this.href); event.returnValue=false; ">
Logout (Back Disabled)
</A>
這種方法用連結頁面的URL替換了目前的曆史紀錄,這樣浏覽曆史記錄中就不會有本頁面,後退按鈕将不能回到本頁面。使用者點選“Logout”連結登出并執行新頁面,這時當使用者點選“後退”按鈕将不能回到本頁,而是回到在本頁之前打開的那個頁面。
也就是說,這種方法清除的是最後一個通路曆史記錄,而不是全部的通路記錄,這是該方法的一個缺點,當然可以在每一個業務頁面都添加這段代碼作為保護。另外,和上一種方法相同,當使用者端禁用了JavaScript之後即失效。
3、
<script language="JavaScript">
function logout()
{
window.close(true);
window.open("logout.do");
}
</script>
<button onClick="logout()">Logout</button>
這種方法比較偷懶,關掉浏覽器再重新開,經過我的測試在視覺上幾乎感覺不出來延時,同時又保證了後退按鈕不可用(新視窗浏覽器後退按鈕為灰色),看起來似乎是個好方法,但缺點也比較明顯:
首先,關閉和重開的浏覽器視窗大小可能不同,使用者可以明顯看出這一過程,并且在一定程度上影響操作。
其次,同上,這是一個JavaScript方法。
以上方法都是針對“後退”按鈕作出的反應,用戶端浏覽器需要打開JavaScript代碼,下面嘗試從另一角度來解決這一問題:
4、禁止緩存
<%
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Cache-Control", "no-store");
response.setDateHeader("Expires", 0);
response.setHeader("Pragma", "no-cache");
%>
這種方法使用伺服器端腳本,強制浏覽器重新通路伺服器下載下傳頁面,而不從緩存讀取,結合struts jsp頁面中的<logic>标簽實作重新定向。
以上各種方法都有一定的局限,雖然是一個小問題,可是考慮到頁面安全的因素,卻不得不重視。
摘自:http://blog.csdn.net/deepwishly/article/details/7347451