Ext JS框架程序中阻止鍵盤觸發(fā)回退或者刷新頁面的代碼分享

字號:


    在 Extjs 開發(fā)中,我們需要屏蔽一些鍵盤按鍵,來避免用戶在使用鍵盤操作的過程中不小心按到這些快捷鍵造成輸入信息丟失等問題.
    代碼如下:
    Ext.onReady(function(){    
          Ext.WindowMgr.zseed = 10000;  
          Ext.QuickTips.init();   
          Ext.getDoc().on("contextmenu", function(e){    
            e.stopEvent();    
          });   
          if(document.addEventListener){  
            document.addEventListener("keydown",maskBackspace, true);  
          }else{  
            document.attachEvent("onkeydown",maskBackspace);  
          }  
          function maskBackspace(event){  
            var event = event || window.event; //標準化事件對象  
            var obj = event.target || event.srcElement;  
            var keyCode = event.keyCode ? event.keyCode : event.which ?  
                event.which : event.charCode;  
            if(keyCode == 8){  
              if(obj!=null && obj.tagName!=null && (obj.tagName.toLowerCase() == "input"  
                  || obj.tagName.toLowerCase() == "textarea")){  
                event.returnValue = true ;  
                if(Ext.getCmp(obj.id)){  
                  if(Ext.getCmp(obj.id).readOnly) {  
                    if(window.event)  
                      event.returnValue = false ; //or event.keyCode=0  
                    else 
                      event.preventDefault();  //for ff  
                  }  
                }  
              }else{  
                if(window.event)  
                  event.returnValue = false ;  // or event.keyCode=0  
                else 
                  event.preventDefault();  //for ff  
              }  
            }  
          }  
          var map = new Ext.KeyMap(document, [  
          {  
            key: [116], // F5  
            fn: function(){ },  
            stopEvent: true,  
            scope: this 
          },{  
            key: [37,39,115], //方向鍵左,右,F4  
            alt: true,  
            fn: function(){ },  
            stopEvent: true,  
            scope: this 
          }, {  
            key: [82], // ctrl + R  
            ctrl: true,  
            fn: function(){ },  
            stopEvent: true,  
            scope: this 
          }]);  
          map.enable();  
    });  
    禁止在IE8中使用 F5 刷新還需加上代碼 :
    代碼如下:
    <body onkeydown="if(event.keyCode==116){event.keyCode=0;return false;}">