2009-10-30 3 views
0

Я пытаюсь использовать JQuery для перехвата нажатий клавиш Control-A, на моей веб-странице, например, так:Могу ли я перехватить управление-нажатие клавиш на IE?

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

Это работает на Firefox, но в IE7, мой обработчик события не дозвонился, и все вместо этого выбирается текст на странице (как это происходит в Firefox без обработчика события).

Можно ли каким-либо образом перехватить элемент управления -A на IE?

+0

Я думаю, что проблема заключается в имени вашего параметра. Просто назовите его 'e' вместо предопределенного' event' –

ответ

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

Super, спасибо! Он работает даже в IE6. – Sean

+0

Демонстрация: http://jsfiddle.net/zDGPG/ –

+0

Наткнулся на это, пытаясь сделать то же самое с Ctrl + A. Этот классный трюк больше не работает в Edge или IE11 в Windows 10. Меня огорчает то, что единственная заслуга в разработке Linux - это то, что когда вы добираетесь до тестирования в M $, вы найдете 8 вещей, которые работают на КАЖДОЙ браузер и платформу, кроме IE/Край. – drew010

0

Если вы делаете возврат ложного в обработчик событий, то он отменяет поведение браузеров. В зависимости от браузера он может вести себя по-другому (например, нажатие клавиши по-прежнему запускается в firefox после того, как keydown отменил его, в то время как IE остановит его).

Смежные вопросы