Ответ 1
См. http://unixpapa.com/js/key.html для объяснения, почему у них разные ключи. Я не знаю международного способа сопоставления ключей.
Итак, я видел сообщения некоторых форумов о разных браузерах, сообщающих о различиях keyCodes, но все, кажется, так избегают "почему?".
Я пытался захватить двоеточие (:) keyCode и понял, что Firefox сообщает e.keyCode 56. Хотя Chrome сообщает о 186 (я думаю, что это было).
Есть ли универсальный способ получить правильный ключевой код во всех браузерах?
И почему они разные, если они являются одними и теми же ключами?
Мне было бы более любопытно, есть ли международный способ получить одно нажатие клавиши.
Спасибо.
См. http://unixpapa.com/js/key.html для объяснения, почему у них разные ключи. Я не знаю международного способа сопоставления ключей.
Это зависит от того, интересуетесь ли вы, какой физический ключ нажал пользователь или какой символ набрал пользователь. Если это ваш персонаж, вы можете получить это надежно во всех основных браузерах (используя свойство keypress
event which
в большинстве браузеров или keyCode
в IE <= 8), но только в keypress
событие. Если вы используете ключ, используйте событие keydown
или keyup
и изучите свойство keyCode
, хотя точные сопоставления с ключевым кодом несколько отличаются друг от друга между браузерами.
Отличное объяснение и ссылки на все связанные с JavaScript события можно найти в http://unixpapa.com/js/key.html.
Чтобы пользователь надежно набрал символ двоеточия во всех основных браузерах, вы можете сделать следующее:
document.onkeypress = function(e) {
e = e || window.event;
var charCode = (typeof e.which == "number") ? e.which : e.keyCode;
if (charCode && String.fromCharCode(charCode) == ":") {
alert("Colon!");
}
};
Это старый вопрос. Современный способ сделать это - использовать event.key. См. MDN Key
Я думаю, вы должны сделать JavaScript, чтобы получить ключевой код символа ':', поэтому script будет знать, что это такое в определенной среде. Аналогичный вопрос был задан fooobar.com/info/204425/....