Какова функциональность события JavaScript e.which? Резюме с примером.
e.which
не является событием, который
является свойство объекта event
, которое большинство людей помечает как e
в своих обработчиках событий. Он содержит код клавиши, которая была нажата для запуска события (например, нажатие клавиши, нажатие клавиши).
document.onkeypress = function(myEvent) { // doesn't have to be "e"
console.log(myEvent.which);
};
С этим кодом консоль распечатает код любой клавиши, которую вы нажимаете на клавиатуре.
который
является свойством объектов 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