Кросс-браузер 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/