Связывание события нажатия клавиши с использованием JQuery не работает в Chrome - PullRequest
2 голосов
/ 05 августа 2010

Я использую Ubuntu 10 и пробую приведенный ниже код в Firefox 3.6 и Chrome 5.

    $(document).ready(function(){
        $(document).bind("keypress", function(e){
            alert("Pressed");
        });
    });

Удивительно, но приведенный выше код хорошо работает в FF3.6. то есть для каждой нажатой клавиши я получаю окно с предупреждением.

Но в Chrome я вижу другое поведение. Например, я не получаю окно с предупреждением, когда нажимаю клавиши вверх / вниз, стрелки вверх / вниз / влево / вправо (к сожалению, это ключевые события, которые я отчаянно хочу отслеживать).

Кто-нибудь знает, почему Chrome не привязывает событие нажатия клавиш к определенным клавишам, таким как страница вверх / вниз, стрелка влево / вправо?

1 Ответ

5 голосов
/ 05 августа 2010

Событие onkeypress изначально было проприетарным событием для Internet Explorer, позже включенным в другие браузеры, но с различными реализациями. Chrome / Safari оставался верным реализации Microsoft, для которой документация гласит:

Начиная с Microsoft Internet Explorer 4.0, событие onkeypress запускается и может быть отменено для следующих клавиш:

Буквы: A - Z (прописные и строчные)
Цифры: 0 - 9
Символы: @ # $% ^ & * () _ - + = <[] {},. /? \ | '`" ~ <br> Система: ESC, ПРОБЕЛ, ВВОД

Для других ключей вы должны связать с keydown или keyup .

Справочник по совместимости Quirksmode.org гласит:

Когда пользователь нажимает специальные клавиши, такие как клавиши со стрелками, браузер НЕ должен запускать события нажатия клавиш.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...