2010-07-29 59 views

回答

6

您無法禁用用戶瀏覽器上的後退按鈕。這是瀏覽器的基本功能,不能被覆蓋。

可以使得您的應用程序中斷(顯示錯誤消息,要求用戶重新開始)如果用戶返回。這樣做是一個壞主意,因爲它確實承認在設計應用程序時沒有考慮後退按鈕。每個應用程序,甚至訂單,購物車,網上銀行等,如果設計正確應該可以使用後退按鈕。如果他們不能,那麼應用程序開發人員就會失敗。我已經看到了故意破壞後退按鈕使用

一種方法是通過在應用程序中的每個URL令牌,每個表單中。每個頁面都會重新生成令牌,一旦用戶加載新頁面,前一頁中的任何令牌都將失效。當用戶加載一個頁面時,該頁面只會顯示正確的標記(已被賦予前一頁上的所有鏈接/表單)傳遞給它。

我的銀行提供的網上銀行申請就是這樣。如果您完全使用後退按鈕,則不會再有鏈接工作,也無法再進行頁面重新加載 - 相反,您會看到一條通知,告訴您無法返回,並且必須重新開始。

現在,我認爲這是一種處理問題的懶惰方式。這樣做的網上銀行應用程序會這樣做,因爲如果他們嚴格限制某人可能到達給定頁面的情況的數量,理論上更容易保護應用程序。這無疑是一條捷徑相比,使應用程序工作正常用戶應該期待的方式,但那些誰設計的網上銀行應用較少關注可用性和更側重於減少潛在的攻擊媒介。他們也可能因爲不得不處理真正古老的計算機系統和界面而受到壓力。

5

你不準modifywindow.history entrys。如果您嘗試設置window.history.length,大多數瀏覽器都會拋出異常。

但是,當用戶改掉離開當前頁面,您可以做一個更順暢的事情與onbeforeunload

window.onbeforeunload = function(){ 
    return "are you sure?"; 
}; 

,將觸發一個確認框(包括歷史前進/後退)。

+0

它更像是'return confirm(「你確定嗎?」);';) – Reigel 2010-07-29 06:36:17

+8

@Reigel:不需要,你不需要顯式地調用confirm(),事件處理程序負責處理。 – jAndy 2010-07-29 06:37:35

+0

優秀的答案。 – Eric 2014-12-29 16:08:24

相關問題