Обработка ключей JavaScript и совместимость браузера - PullRequest
9 голосов
/ 13 августа 2010

Я работаю над обработкой ключей в Java-скрипте. Я провел некоторое исследование и хотел бы знать, правильно ли я понимаю обработку ключей.

Событие KeyDown / KeyUp События key down и key up поддерживаются IE7 + и Firefox 3.5+. Я не проверял более ранние версии браузеров, но, полагаю, они также поддерживают эти события.

Правильно ли говорить, что у каждой клавиши на клавиатуре всегда будет код клавиши.

CharCode

Значение CharCode доступно при нажатии клавиши. Большинство клавиш будет иметь коды, которые представляют фактическое значение. Некоторые ключи не будут иметь код, связанный с ними. Например. Возврат, удаление, клавиши со стрелками.

Правильно ли сказать, что при нажатии клавиши код будет таким же, как и код клавиши?

Порядок событий

  • KeyDown
  • KeyPress
  • KeyUp

Отличается ли этот порядок от браузера к браузеру? Например, у меня есть две функции. Первый связан с событием KeyDown, второй связан с событием KeyPress. Вызов события KeyPress означает, что событие KeyDown также будет вызываться, когда я хочу, чтобы сработало только одно из этих событий.

Наконец, я подумывал об использовании различных процедур обработки ключей в зависимости от версии браузера. Например:

  • Проверить версию браузера
  • Получение процедуры обработки ключей в зависимости от версии браузера

Это введет дополнительный код, но должно упростить обслуживание. Кроме того, в будущем, когда я захочу предоставить поддержку другому браузеру, я могу просто добавить другую подпрограмму, и это не повлияет на существующую подпрограмму обработки символов.

Пока я читаю http://www.quirksmode.org

Ответы [ 3 ]

7 голосов
/ 13 августа 2010

См. Следующие страницы, они ответят на ваши запросы:

событие onkeydown , событие onkeypress , свойство keyCode , свойство charCode , какое свойство

6 голосов
/ 13 августа 2010

Следующая статья Яна Вольтер никогда не подводил меня и далеко и далеко лучший ресурс на браузер ключевых событий я видел:. http://unixpapa.com/js/key.html. Он отвечает на все вопросы, которые вы поставленные

1004 *Одна вещь, на которую следует обратить внимание, заключается в том, что при тщательном использовании свойств ключевых событий в вашем распоряжении вам почти никогда не придется искать какой-либо конкретный браузер в коде обработки ключей.
0 голосов
/ 21 мая 2015

2015 обновление:

Согласно MDN event.charCode, event.keyCode и event.which устарели. event.key - это самый новый и самый горячий способ проверить, какая клавиша была нажата.

Это выглядит просто в использовании, но поддержка браузера не идеальна. Все, что у нас есть, - это частичная поддержка в Chrome 45+ (еще не выпущен AFAIK), Firefox 23+ и IE 9+.

...