Подтвердить что ты не робот

Javascript событие e.which?

Какова функциональность события javascript e.which? Просьба привести пример.

4b9b3361

Ответ 1

e.which не является событием, which является свойством объекта event, который большинство людей помечено как e в своих обработчиках событий. Он содержит key code ключа, который был нажат для запуска события (например: keydown, keyup).

document.onkeypress = function(myEvent) { // doesn't have to be "e"
    console.log(myEvent.which);
};

С помощью этого кода консоль распечатает код любой клавиши, которую вы нажимаете на клавиатуре.

Ответ 2

which является свойством объектов Event. Он определен для связанных с ключами и связанных с мышью событий в большинстве браузеров, но в обоих случаях не определен в IE (до версии 9).

Для событий, связанных с мышью, which указывает кнопку мыши, которая была задействована. Для IE < 9, эквивалентное значение найдено в window.event.button. Просто чтобы усложнить ситуацию, браузеры, отличные от IE, также поддерживают свойство button событий мыши, которое иногда сообщает о другом значении от which. Кроме того, браузеры иногда имеют разные значения для одной и той же кнопки или комбинации кнопок. Если вы используете which во всех браузерах, поддерживающих его, и button в IE < 9, одна константа состоит в том, что значение 1 всегда означает, что задействована левая кнопка мыши (хотя и не обязательно одна).

document.onmousedown = function(e) {
    e = e || window.event;
    var button = (typeof e.which != "undefined") ? e.which : e.button;
    if (button == 1) {
        alert("Left mouse button down");
    }
};

Для полного анализа я рекомендую статью Яна Вольтера о событиях мыши JavaScript.

Для событий, связанных с ключом, which относится к нажатой клавише. Для событий keydown и keyup это относительно просто: это key code для нажатой клавиши и возвращает то же значение, что и свойство события keyCode. Поскольку все браузеры поддерживают свойство keyCode и IE < 9 не поддерживает which, вы обычно должны использовать keyCode для событий keydown и keyup.

При событиях keypress ситуация более сложная. Для печатных символов символов which - это код символа для нажатия клавиши и поддерживается в более браузерах, чем свойство charCode. В IE < 9 эквивалент снова является свойством keyCode. Таким образом, для обнаружения введенного символа, это кросс-браузерный подход. Имейте в виду, что приведенный ниже код не должен использоваться для непечатаемых клавиш, таких как клавиши со стрелками, которые вы должны обнаружить в событии keydown:

document.onkeypress = function(e) {
    e = e || window.event;
    var charCode = (typeof e.which == "number") ? e.which : e.keyCode;
    if (charCode) {
        alert("Character typed: " + String.fromCharCode(charCode));
    }
};

Опять же, для более подробной информации я рекомендую статью Яна Вольтера о событиях ключевого слова JavaScript

Ответ 3

Эта функция удалена из веб-стандартов. Хотя некоторые браузеры все еще могут его поддерживать, он находится в процессе отбрасывания. Не используйте его в старых или новых проектах. Страницы или веб-приложения, использующие его, могут прерываться в любое время.

Вместо этого вы должны использовать KeyboardEvent.key, если он доступен.

http://codepen.io/KevinOrfas/pen/QKbKAd

Ответ 4

Во время события e:

e.which

совпадает с:

e.keyCode

Таким образом, обе функции позволяют получить код ключа клавиши, нажатой во время нажатия клавиши, нажатия клавиш или события keyup

Многие люди используют || (OR), чтобы убедиться, что их код работает в браузерах, которые не поддерживают какое свойство. Посмотрите на код ниже:

document.onkeypress = function(e) {
   var key = e.which || e.keyCode;
   alert(key);
}