asp.net 中屏蔽鼠标右键、Ctrl+N、Shift+F10、F11、F5刷新、退格键

屏蔽鼠标右键、Ctrl+N、Shift+F10、F11、F5刷新、退格键

原文如下:

        //屏蔽鼠标右键、Ctrl+N、Shift+F10、F11、F5刷新、退格键 
        function document.oncontextmenu() {
            event.returnValue = false;
        } //屏蔽鼠标右键
        function window.onhelp() {
            return false
        } //屏蔽F1帮助
        function document.onkeydown() {
            if ((window.event.altKey) &&
                 ((window.event.keyCode == 37) ||   //屏蔽 Alt+ 方向键 ← 
                 (window.event.keyCode == 39)))   //屏蔽 Alt+ 方向键 → 
            {
                //alert("不准你使用ALT+方向键前进或后退网页!");
                event.returnValue = false;
            }

            /* 注:这还不是真正地屏蔽 Alt+ 方向键, 
            因为 Alt+ 方向键弹出警告框时,按住 Alt 键不放, 
            用鼠标点掉警告框,这种屏蔽方法就失效了。以后若 
            有哪位高手有真正屏蔽 Alt 键的方法,请告知。*/
            if ((event.keyCode == 8) ||                 //屏蔽退格删除键 
                  (event.keyCode == 116) ||                 //屏蔽 F5 刷新键
                  (event.ctrlKey && event.keyCode == 82)) { //Ctrl + R 

                event.keyCode = 0;
                event.returnValue = false;
            }
            if (event.keyCode == 122) { event.keyCode = 0; event.returnValue = false; }   //屏蔽F11 
            if (event.ctrlKey && event.keyCode == 78) event.returnValue = false;   //屏蔽 Ctrl+n 
            if (event.shiftKey && event.keyCode == 121) event.returnValue = false;  //屏蔽 shift+F10 
            if (window.event.srcElement.tagName == "A" && window.event.shiftKey)
                window.event.returnValue = false;             //屏蔽 shift 加鼠标左键新开一网页
            if ((window.event.altKey) && (window.event.keyCode == 115))             //屏蔽Alt+F4
            {
                //window.showModelessDialog("about:blank", "", "dialogWidth:1px;dialogheight:1px");
                return false;
            }
        } 

现在项目上又需要屏蔽这些按键,发现Backspace键屏蔽之后在文本框里也不能使用了。
这给使用者带来了极大的不便。
修改为下面的代码,就可以解决这个问题了。

  //屏蔽鼠标右键、Ctrl+N、Shift+F10、F11、F5刷新、退格键 
function document.oncontextmenu(){event.returnValue=false;}//屏蔽鼠标右键 
function window.onhelp(){return false} //屏蔽F1帮助 
function document.onkeydown() 
{ 
  if ((window.event.altKey)&& 
      ((window.event.keyCode==37)||   //屏蔽 Alt+ 方向键 ← 
       (window.event.keyCode==39)))   //屏蔽 Alt+ 方向键 → 
  { 
     event.returnValue=false; 
  } 
     /* 注:这还不是真正地屏蔽 Alt+ 方向键, 
     因为 Alt+ 方向键弹出警告框时,按住 Alt 键不放, 
     用鼠标点掉警告框,这种屏蔽方法就失效了。以后若 
     有哪位高手有真正屏蔽 Alt 键的方法,请告知。*/ 
  if ((event.keyCode==116)||                 //屏蔽 F5 刷新键 
      (event.ctrlKey && event.keyCode==82)){ //Ctrl + R 
     event.keyCode=0; 
     event.returnValue=false; 
     } 
     
  if (event.keyCode==122){event.keyCode=0;event.returnValue=false;}  //屏蔽F11 
  if (event.ctrlKey && event.keyCode==78) event.returnValue=false;   //屏蔽 Ctrl+n 
  if (event.shiftKey && event.keyCode==121)event.returnValue=false;  //屏蔽 shift+F10 
  if (window.event.srcElement.tagName == "A" && window.event.shiftKey)  
      window.event.returnValue = false;             //屏蔽 shift 加鼠标左键新开一网页 
  if ((window.event.altKey)&&(window.event.keyCode==115))             //屏蔽Alt+F4 
  { 
      return false; 
  }
  
  // Backspace按键的控制。
    var ev =  window.event;     
    var obj = ev.target || ev.srcElement;         
    var t = obj.type || obj.getAttribute('type');     
        
    var vReadOnly = obj.getAttribute('readonly');  
    var vEnabled = obj.getAttribute('enabled');  
  
    vReadOnly = (vReadOnly == null) ? false : vReadOnly;  
    vEnabled = (vEnabled == null) ? true : vEnabled;  
      
    //当敲Backspace键时,事件源类型为密码或单行、多行文本的,   
    //并且readonly属性为true或enabled属性为false的,则退格键失效   
    var flag1=(ev.keyCode == 8 && (t=="password" || t=="text" || t=="textarea")   
                && (vReadOnly==true || vEnabled!=true))?true:false;  
     
    //当敲Backspace键时,事件源类型非密码或单行、多行文本的,则退格键失效   
    var flag2=(ev.keyCode == 8 && t != "password" && t != "text" && t != "textarea")  
                ?true:false;          

    if(flag2){  
        return false;  
    }  
    if(flag1){     
        return false;     
    }     

   
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值