Я работаю над обработкой клавиш в Javascript. Я провел некоторое исследование и хотел бы знать, правильно ли я понимаю работу с ключами.
Событие KeyDown / KeyUp События нажатия и подъема ключа поддерживаются IE7 + и Firefox 3.5+ Я не проверял более ранние версии браузеров, но думаю, что они тоже поддерживают эти события.
Можно ли сказать, что каждая клавиша на клавиатуре всегда будет иметь код клавиши.
CharCode
Значение CharCode доступно при нажатии клавиши. Большинство клавиш будут иметь коды символов, которые представляют фактическое значение. С некоторыми ключами не будет ассоциироваться кодировка. Например. backspace, delete, клавиши со стрелками.
Правильно ли я говорю, что при нажатии клавиши код символа будет таким же, как код клавиши?
Порядок событий
Отличается ли этот порядок от браузера в браузер? Например, у меня две функции. Первый связан с событием KeyDown, второй - с событием KeyPress. Вызов события KeyPress означает, что событие KeyDown также будет вызываться, когда я хочу, чтобы работало только одно из этих событий.
Наконец, я подумал об использовании различных процедур обработки ключей в зависимости от версии браузера. Например:
Это введет дополнительный код, но должно упростить обслуживание. Кроме того, в будущем, когда я захочу обеспечить поддержку другого браузера, я могу просто добавить еще одну процедуру, и это не повлияет на существующую процедуру обработки символов.
Пока я читал http://www.quirksmode.org
Смотрите следующие страницы, они ответят на ваши вопросы:
onkeydown event, onkeypress event, keyCode property, charCode property, свойство
Следующая статья Яна Вольтера никогда не подводила меня и является лучшим ресурсом по ключевым событиям браузера, который я видел: http://unixpapa.com/js/key.html. Она отвечает на все поставленные вами вопросы.
Следует подчеркнуть, что при тщательном использовании имеющихся в вашем распоряжении свойств ключевых событий вам почти наверняка никогда не понадобится искать конкретный браузер в вашем коде обработки ключевых событий.