В основном это проверка здравомыслия. key code для обеих клавиш сдвига - 16. Значит ли это, что на самом деле невозможно отличить события сдвига влево и вправо в браузере?
Может ли javascript указать разницу между левой и правой клавишей сдвига?
Ответ 1
В новых браузерах, поддерживающих DOM3
, вы можете использовать event.location
для проверки местоположения.
В спецификация DOM3 для местоположения определены 4 константы, DOM_KEY_LOCATION_STANDARD
, DOM_KEY_LOCATION_LEFT
, DOM_KEY_LOCATION_RIGHT
и DOM_KEY_LOCATION_NUMPAD
.
В этом случае вы можете сделать:
if (event.location === KeyboardEvent.DOM_KEY_LOCATION_LEFT){
} else if (event.location === KeyboardEvent.DOM_KEY_LOCATION_RIGHT){
}
Ответ 2
Internet explorer способен различать сдвиг влево и вправо с помощью свойства shiftLeft:
В противном случае они неразличимы.
Ответ 3
Самый простой способ сделать это
$(document).ready(function(){
$("html").keydown(function(e) {
if (e.shiftKey) {
if (event.location == 1) console.log('left shift');
if (event.location == 2) console.log('right shift');
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>