Свойство which события KeyboardEvent
Определение и использование
which свойство возвращает инициировавшее Событие onkeypress Unicode код символа клавиши, или событие, которое его инициировало onkeydown или onkeyup Unicode код клавиши, который вызвал событие
Разница между двумя типами кодов:
- Код символа - это числовой код ASCII символа
- Код клавиши - это числовой код фактической клавиши на клавиатуре
Эти типы не всегда означают одно и то же. Например, клавиша "w" в нижнем регистре и "W" в верхнем регистре имеют одинаковый код клавиатуры,因为在 клавиатуре нажата одна и та же клавиша ("W" = числовой "87"), но код символа разный, так как resulting символ разный ("w" или "W", то есть "119" или "87") - пожалуйста, посмотрите на следующие примеры, чтобы лучше понять это.
Совет:Чтобы узнать, нажал ли пользователь клавишу, которую можно напечатать (например, "a" или "5"), рекомендуется использовать этот атрибут в событии onkeypress. Чтобы узнать, нажал ли пользователь функциональную клавишу (например, "F1", "CAPS LOCK" или "Home"), используйте события onkeydown или onkeyup.
Комментарий:IE8 и более ранние версии не поддерживают атрибут which. Для этих версий браузера можно использовать атрибут keyCode. Однако, атрибут keyCode не действует для события onkeypress в Firefox. Для решения проблемы кросс-браузерной совместимости можно использовать следующий код: }}
var x = event.which || event.keyCode; // Использование which или keyCode зависит от поддержки браузером
Совет:Для списка всех Unicode символов обратитесь к нашему Полное руководство по Unicode.
Совет:Если нужно преобразовать значение Unicode в символ, используйте Метод fromCharCode().
Комментарий:Этот атрибут только для чтения.
Комментарий:keyCode и which свойства предоставлены только для совместимости. 最新ная версия спецификации DOM событий рекомендует использовать свойство key (если доступно).
Совет:Если вы хотите узнать, были ли нажаты клавиши "ALT", "CTRL", "META" или "SHIFT" во время события клавиши, используйте altKeyиctrlKeyиmetaKey или shiftKey Свойства.
Пример
Получение значения Unicode для нажатой клавиши:
var x = event.which;
Ниже страницы есть более примеров TIY.
Синтаксис
event.which
Технические детали
Возвратное значение: | Числовое значение, представляющее Unicode код символа или Unicode код клавиатуры. |
---|---|
Версия DOM: | DOM Level 2 Events |
Поддержка браузерами
Числа в таблице указывают на первую версию браузера, которая полностью поддерживает это свойство.
Свойства | Chrome | IE | Firefox | Safari | Opera |
---|---|---|---|---|---|
which | Поддержка | 9.0 | Поддержка | Поддержка | Поддержка |
Более примеров
Пример
Использование onkeypress и onkeydown для демонстрации различий между кодами символов и кодами клавиатуры:
<input type="text" onkeypress="uniCharCode(event)" onkeydown="uniKeyCode(event)"> function uniCharCode(event) { var char = event.which || event.keyCode; // event.keyCode используется в IE8 и более ранних версиях document.getElementById("demo").innerHTML = "Код символа Unicode: " + char; } function uniKeyCode(event) { var key = event.which || event.keyCode; // event.keyCode используется в IE8 и более ранних версиях document.getElementById("demo2").innerHTML = "Код Unicode: " + key; }
Если нажать клавишу "a" на клавиатуре (не используя Capslock), результаты char и key будут:
Код символа Unicode: 97 Код Unicode: 65
Пример
Если пользователь нажал клавишу Escape, то появится текстовое сообщение:
<input type="text" onkeydown="myFunction(event)"> function myFunction(event) { var x = event.which || event.keyCode; // event.keyCode используется в IE8 и более ранних версиях if (x == 27) { // 27 - это клавиша ESC alert("Вы нажали клавишу Escape!"); } }
Пример
Преобразование значения Unicode в символ (не подходит для функциональных клавиш):
var x = event.which || event.keyCode; // Получение значения Unicode var y = String.fromCharCode(x); // Преобразование значения в символ
Соответствующие страницы
Руководство по HTML DOM:Атрибут key в KeyboardEvent
Руководство по HTML DOM:Атрибут keyCode в KeyboardEvent
Руководство по HTML DOM:Атрибут charCode в KeyboardEvent