2009-10-30 81 views
0

我试图使用jQuery拦截我的网页上控制-A按键,就像这样:我可以拦截IE上的控件按键吗?

$(document).keypress(function (event) { 
    if (event.ctrlKey && (event.which == 65 || event.which == 97)) { 
     event.preventDefault(); 
     // ... 
    } 
}); 

这个工作在Firefox,但在IE7,我的事件处理程序不会被调用,所有的页面上的文本被选中(而不是事件处理程序的Firefox)。

有没有什么办法可以拦截IE上的控件-A?

+0

我认为问题是你的参数名称。只是称之为'e'而不是预定义的'event' – 2009-10-30 21:09:59

回答

6

此作品在FF 3.5和IE7对我来说:

$(function() { 
     var isCtrl = false; 

     $(document).keyup(function (e) { 
      if(e.keyCode == 17) 
       isCtrl = false; 
     }).keydown(function (e) { 
      if(e.keyCode == 17) 
       isCtrl = true; 

      if(e.keyCode == 65 && isCtrl == true) { 
       alert('Intercepted CTRL+A'); 
       e.preventDefault(); 
      } 
     }); 
    }); 
+0

超级,谢谢!它甚至可以在IE6中运行。 – Sean 2009-10-30 21:36:02

+0

演示:http://jsfiddle.net/zDGPG/ – 2013-05-24 17:31:20

+0

在尝试做同样的w/Ctrl + A时偶然想到。这个很酷的技巧似乎不再适用于Edge或Windows 10上的IE11。令我感到难过的是,关于在Linux上开发的唯一令人厌恶的部分是,当您以M $进行测试时,您会发现8个适用于每个浏览器和平台的东西,除IE /边缘。 – drew010 2017-06-24 00:52:29

0

如果您在事件处理程序返回false,那么将取消浏览器的行为。根据浏览器的不同,其行为可能会有所不同(例如,在keydown取消它之后,按键仍然会在firefox上触发,而IE会停止)。

相关问题