Обработка ключей JavaScript и совместимость с браузером
Я работаю над обработкой ключей в java script. Я провел небольшое исследование и хотел бы знать, правильно ли я понимаю управление ключами.
Событие KeyDown / KeyUp События key down и key up поддерживаются IE7+ и Firefox 3.5+ я не проверял более ранние версии браузеров, но я предполагаю, что они также поддерживают эти события.
Правильно ли говорить, что каждая клавиша на клавиатуре всегда будет иметь код-ключ.
CharCode
Значение CharCode доступно при нажатии клавиши.Большинство ключей будут иметь коды, представляющие фактическое значение. Некоторые ключи не будут иметь связанного с ними кода. Например, backspace, delete, клавиши со стрелками.
Правильно ли я говорю, что при нажатии клавиши код будет таким же, как и код ключа?
Порядок событий
- KeyDown
- нажатие клавиши
- KeyUp
Делает это порядок отличается от браузера к браузеру? Например, у меня есть две функции. Первый связан с событием KeyDown, второй связан с событием KeyPress. Вызов события нажатия клавиши означает, что событие KeyDown также будет вызвано, когда я хочу, чтобы только одно из этих событий работало.
Наконец, я рассматривал возможность использования различных процедур обработки ключей в зависимости от версии браузера. Например:
- проверить версию браузера
- получить процедуру обработки ключей в зависимости от браузера версия
Это введет дополнительный код, но должно упростить обслуживание. Кроме того, в будущем, когда я захочу обеспечить поддержку для другого браузера, я могу просто добавить другую процедуру, и это не повлияет на существующую процедуру обработки символов.
До сих пор я читал http://www.quirksmode.org
3 ответа:
Смотрите следующие страницы, они ответят на ваши вопросы:
Onkeydown событие , onkeypress событие , свойство keyCode , свойство charCode , какое свойство
Следующая статья Яна Вольтера никогда не подводила меня и является лучшим ресурсом по ключевым событиям браузера, которые я видел: http://unixpapa.com/js/key.html он отвечает на все поставленные вами вопросы.
Следует подчеркнуть, что при тщательном использовании свойств ключевых событий, имеющихся в вашем распоряжении, вы почти наверняка никогда не будете нуждаться в поиске конкретного браузера в вашем коде обработки ключей.
Обновление 2015 года:
Согласно MDN
event.charCode
,event.keyCode
иevent.which
все они были осуждены.event.key
это самый новый и самый горячий способ проверить, какая клавиша была нажата.Он выглядит простым в использовании, но поддержка браузера не идеальна. Все, что у нас есть сейчас-это частичная поддержка в Chrome 45+ (еще не вышел AFAIK), Firefox 23+ и IE 9+.