Кросс-браузер get keyCode
Я пытаюсь получить кросс-браузер способ прослушивания keyCode
пользователя keyDown
.
Для мобильных браузеров мне приходится запускать виртуальную клавиатуру, поэтому я использую вход, скрытый css, запускаемый с событием click
. Это хорошо работает, за исключением того, что, когда я пытаюсь прослушать keycode, на fennec (мобильный Firefox), у меня странное поведение.
Вот функция, которую я использую для прослушивания keyCode
.
document.querySelectorAll('input')[0].addEventListener('keydown', handler);
function handler(e) {
e.preventDefault();
var k = (e.which) ? e.which : e.keyCode;
document.getElementById('log').innerHTML = k;
this.style.backgroundColor = "#FFAAFF";
}
<input type="text" />
<span id="log"></span>
Ответы
Ответ 1
Существует не идеальное решение для прослушивания KeyCode в браузерах и ОС... Просто потому, что javascript использует те же ключевые коды, о которых сообщает операционная система, где она работает.
Вам лучше использовать событие input
вместо keyDown
В соответствии с этим сайт событие input
происходит, когда текстовое содержимое элемента изменяется через пользовательский интерфейс, что является тем, что вы хотите, потому что в некоторых мобильных браузерах/событиях ОС не срабатывает, пока пользователь не войдет во вход и не произойдет событие change
.
http://jsfiddle.net/n8gv21a1/