2017-06-14 93 views
0

需要防止用戶轉到上一頁。完全禁用瀏覽器的後退按鈕,完全不需要

當我使用下面的代碼它的作品,但它不是我所需要的。當按下後退按鈕它說:「文件過期」:

Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1)); 
Response.Cache.SetValidUntilExpires(false); 
Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches); 
Response.Cache.SetCacheability(HttpCacheability.NoCache); 
Response.Cache.SetNoStore(); 

另一個想法 - 打開一個新的窗口,而不工具欄:

<script> 
    function PopupWithoutToolbar(link) { 
     var w = window.open(link.href, 
      link.target || "_blank", 
      'menubar=no,toolbar=no,location=no,directories=no,status=no,scrollbars=no,resizable=no,dependent,width=800,height=620,left=0,top=0'); 
     return w ? false : true; 
    } 
</script> 

<a href="http://www.google.com" onclick="return PopupWithoutToolbar(this)">yahoo</a> 

但是,還是......如果用戶按下退格鍵在鍵盤上他可以回去。看來這種方法只是用於隱藏和不禁用按鈕。

有什麼辦法可以簡單地忽略後退按鈕嗎?

+1

https://stackoverflow.com/questions/12381563/how-to-stop-browser-back-button-using-javascript – amiramw

+1

你可能要重新考慮這樣做。後退按鈕是瀏覽器最基本和最知名的功能之一(即使我的奶奶知道它)。禁用它或者改變它的功能會導致糟糕的用戶體驗,因爲用戶可能會認爲他們的瀏覽器崩潰或者他們的鼠標被中斷,因爲一直會發生的事情總是會發生。 – VDWWD

回答

1

根據您的文章,它聽起來就像你唯一的問題是,從允許用戶返回禁用退格鍵。

以下是我使用jquery進行的操作。仍然允許退格在啓用的文本編輯輸入內工作,它應該在那裏。

// Prevent the backspace key from navigating back. 
    $(document).unbind('keydown').bind('keydown', function (event) { 
     var doPrevent = false; 
     if (event.keyCode === 8) { 
      var d = event.srcElement || event.target; 
      if ((d.tagName.toUpperCase() === 'INPUT' && (d.type.toUpperCase() === 'TEXT' || 
                 d.type.toUpperCase() === 'PASSWORD' || 
                 d.type.toUpperCase() === 'FILE')) || 
                 d.tagName.toUpperCase() === 'TEXTAREA') { 
       doPrevent = d.readOnly || d.disabled; 
      } 
      else { 
       doPrevent = true; 
      } 
     } 

     if (doPrevent) { 
      event.preventDefault(); 
     } 
    }); 
2

我不完全確定這是否可行,但您可以嘗試使用javascript處理事件。

一樣,如果你想完全阻止用戶回去禁用退格鍵就可以像

$(window).on("keypress", function (e){ 
    if(e.keycode == "backspace") 
     e.preventDefault(); 
}) 

我能想出退格鍵爲你的鍵碼,但是,是不是太硬弄清楚。此外,這使用jQuery,但你可以使用只是原始的JavaScript。只是不確定那會是什麼。

+0

感謝您的提示! 順便說一句,它是「8」:) – Dimitri

1

最簡單的事情永遠

window.onhashchange = function (event) { 
//blah blah blah 
event.preventDefault(); 
return false; 
} 

您可以處理從(window.location的)位置域等,然後,如果你在這種情況下要取消該事件。

How to Detect Browser Back Button event - Cross Browser