天天看點

禁用浏覽器後退按鈕

為解決浏覽器後退按鈕禁用的方法,在網上搜尋了幾個方法,雖然可用但是沒有太完美的...

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