關於屏蔽瀏覽器退格鍵的幾個嘗試

大部分瀏覽器在瀏覽網頁時,按退格鍵(BackSpace)會觸發後退操做。但我但願嘗試下如何屏蔽此功能。html

我使用的操做系統爲Win7,我用於測試的三個瀏覽器版本信息以下:node

一、Internet Exlorer 8.0.7601.17514(後面簡稱IE8)瀏覽器

二、Google Chrome 50.0.2661.102 m(後面簡稱Chrome)session

三、Firefox 46.0.1(後面簡稱Firefox)測試

從網上搜集的資料代表,能夠經過添加js代碼的方式屏蔽退格鍵。spa

若有頁面page1.html代碼以下:操作系統

<html>
  <head>
    <title>測試頁面1</title>
  </head>
  <body>
    <input type="button" id="openNewPage" value="打開新頁面" onclick="openNewPage();" />
    <script>
      function openNewPage() {
        window.location.href = "file:///C:/Users/Tsybius/Desktop/ShieldBpTest/page2.html";
      }
    </script>
  </body>
</html>

該頁面能夠打開另外一個頁面page2.html:code

<html>
  <head>
    <title>測試頁面2</title>
  </head>
  <body>
    <p>這是一張測試頁面</p>
    <input type="text" id="testText" />
    <script>
        //參考自 http://q821424508.iteye.com/blog/1587025
        window.onload = function() {  
            if (navigator.userAgent.indexOf('Firefox') >= 0) {
                alert("檢測到您正使用火狐瀏覽器,請將 about:config 中 browser.backspace_action 設置爲 2");
                return;
            }
            document.getElementsByTagName("body")[0].onkeydown = function() {
                if(event.keyCode==8) {
                    var elem = event.srcElement || event.currentTarget;
                    var name = elem.nodeName;
                    if(name!='INPUT' && name!='TEXTAREA') {
                        return _stopIt(event);  
                    }  
                    var type_e = elem.type.toUpperCase();  
                    if(name=='INPUT' && (type_e!='TEXT' && type_e!='TEXTAREA' && type_e!='PASSWORD' && type_e!='FILE')) {
                        return _stopIt(event);  
                    }  
                    if(name=='INPUT' && (elem.readOnly==true || elem.disabled ==true)){  
                        return _stopIt(event);  
                    }  
                }  
            };
        };
        function _stopIt(e) {  
            if(e.returnValue) {  
                e.returnValue = false ;  
            }  
            if(e.preventDefault){  
                e.preventDefault();  
            }
            return false;  
        }  
    </script>
  </body>
</html>

這個方式通過試驗,經過點擊page1的按鈕進入到page2後,在page2按下退格鍵,若是當前焦點在文本輸入框中則可進行正常的刪除,不然並不會觸發退後功能。不過這個方法適用於Chrome和IE8,在Firefox的試驗並無成功。htm

這個問題網上有人說是由於Firefox用了W3C DOM,而IE用的是IE DOM。但即便用了變通的辦法獲取到了Firefox的event,也沒法阻止退格鍵對頁面的後退。blog

再後來,我發現了Firefox自己就提供了一個屏蔽退格鍵的功能。進入Firefox的about:config頁面,找到屬性browser.backspace_action,這個屬性的介紹能夠參考頁面:

http://kb.mozillazine.org/Browser.backspace_action

這個屬性的值,有0、一、其餘三類取值:

0:按下Backspace鍵後會返回session歷史中上一個打開的頁面,按下Shift+Backspace鍵反之。(Windows系統默認)

1:按下Backspace鍵後會在當前頁的基礎上向上滾動一頁,按下Shift+Backspace鍵反之。(2006年12月7日之前編譯的Linux默認)

其餘:填寫其餘任何整數值都會屏蔽BackSpace鍵。(2006年12月7日之後編譯的Linux版本,默認值爲2)

將這個配置項設爲2,就能夠屏蔽掉Firefox瀏覽器的BackSpace快捷鍵了。

END

相關文章
相關標籤/搜索