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

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

66
задан minil 16 June 2010 в 05:50
поделиться

2 ответа

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

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

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

63
ответ дан 24 November 2019 в 14:56
поделиться

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

Для событий, связанных с мышью, который указывает задействованную кнопку мыши. Для IE <9 эквивалентное значение находится в window.event.button . Чтобы усложнить ситуацию, браузеры, отличные от IE, также поддерживают свойство 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 .

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

Для событий нажатие клавиши ситуация более сложная. Для печатаемых символьных клавиш , который является кодом символа для нажатой клавиши и поддерживается в большем количестве браузеров, чем свойство 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));
    }
};

Опять же, для получения дополнительных сведений я рекомендую Jan Статья Уолтера о ключевых событиях JavaScript

77
ответ дан 24 November 2019 в 14:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: