Пытаюсь выяснить, есть ли ошибка в jQuery или я что-то делаю - PullRequest
5 голосов
/ 26 октября 2011
$(document).keydown(function (event)
    {
    alert(event.which);
    });

Для точки с запятой ; это дает 59 в Firefox и 186 в Chrome. Однако на справочной странице jQuery для события keydown указано

"Хотя браузеры используют разные свойства для хранения этой информации, jQuery нормализует свойство .which, чтобы вы могли надежно использовать его для получения кода клавиши. Этот код соответствует клавише на клавиатуре, включая коды для специальных клавиш, таких как стрелки . "

Я что-то упустил?

Ответы [ 4 ]

4 голосов
/ 26 октября 2011

Свойство which - это «универсальный магазин», для которого была нажата клавиша, что позволяет игнорировать различия между свойствами keyCode и charCode.Это и есть «нормализация», которую обеспечивает jQuery.

Разница в значении which сводится к разнице между тем, как различные браузеры предоставляют информацию, поэтому вам придется написать код для обработкиразные ценности, которые возвращаются. есть несколько ссылок на это поведение в Интернете.

1 голос
/ 26 октября 2011

A быстрый поиск в Google говорит, что вам просто нужно проверить оба. Это постоянное несоответствие с Firefox.

0 голосов
/ 26 октября 2011

Вот полная «нормализация», которую выполняет jQuery:

if ( event.which == null ) {
    event.which = original.charCode != null ? original.charCode : original.keyCode;
}

Похоже, он просто получает keyCode, если charCode не существует. И charCode используется только если event.which еще не существует. Это не меняет чисел вокруг, чтобы сделать их последовательными.

0 голосов
/ 26 октября 2011

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

...