У меня есть прослушиватель событий в Javascript, я могу определить, является ли ключевым событием Ctrl (e.keyCode == 17)
, но как я могу узнать, что этот Ctrl идет с правой или левой?
Как узнать, произошло ли событие из правой клавиши Ctrl?
Ответ 1
Я не думаю, что keyCode отличается.
Вы можете использовать e.ctrlKey
для лучшего способа определить, нажата ли клавиша управления.
Кажется, Flash не может указать, какой из них нажат (либо это, либо неправильно закодировано).
Ответ 2
Простое замечание: я бы не основывал архитектуру/дизайн на доступности правильного ключа управления - на многих клавиатурах ноутбуков могут не быть двух клавиш управления.
Ответ 3
MSIE предоставляет свойство ctrlLeft
для большинства событий. Значения свойств:
-
true
, если во время события нажата левая клавиша -
false
, если левая клавиша не была нажата.
Вы можете комбинировать event.ctrlKey
и event.ctrlLeft
, чтобы определить, была ли нажата правая клавиша Ctrl:
if (event.ctrlKey) {
if (event.ctrlLeft) {
// left Ctrl key pressed
} else {
// right Ctrl key pressed
}
} else {
// no Ctrl key pressed
}
Обратите внимание, что свойство ctrlLeft
в keyup
равно undefined, потому что клавиша Ctrl больше не нажата.
Протестировано в MSIE7 и MSIE9. Не работает в Firefox.
Подробнее см. http://help.dottoro.com/ljqlvhuf.php.
Ответ 4
Если вы проследите его, вы найдете тот же ключ для обоих (17). Я думаю, что невозможно отличить
Ответ 5
Я не знаю, было ли это доступно, когда это было задано, но вы можете различать left- from right-ctrl, а также alt и shift. Теперь вы можете использовать свойства KeyboardEvent.DOM_KEY_LOCATION_ *, чтобы сделать это различие.
Смотрите Может ли javascript указать разницу между клавишей сдвига влево и вправо?
Помните, однако, что я обнаружил, что у Chrome, похоже, есть дефект в его реализации. См. Как я могу различать клавиши слева и справа, ctrl и alt onkeyup в Chrome с Javascript
Ответ 6
Существует свойство event.location
для левой клавиши ctrl, это будет 1 для правой 2, вы можете проверить поддержку браузера на canIuse
if (e.which == 17) {
if (event.location == 1) {
// left ctrl key
} else if (event.location == 2) {
// right ctrl key
}
}