Могу ли я перехватить нажатия клавиш Control-A в IE? - PullRequest
0 голосов
/ 30 октября 2009

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

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

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

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

Ответы [ 2 ]

6 голосов
/ 30 октября 2009

Это работает под 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 голосов
/ 30 октября 2009

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

...