Могу ли я определить, удерживается ли клавиша, когда окно получает фокус? - PullRequest
0 голосов
/ 04 апреля 2019

Я отслеживаю keyDown и keyUp, чтобы показать, нажимается или нет клавиша Shift в JavaScript:

window.addEventListener("keydown",doKeyDown,false);
window.addEventListener("keyup",doKeyUp,false);
var shiftKeyDown = false;

function doKeyDown(e) {
    if (e.keyCode==16) { shiftKeyDown = true; }
}

function doKeyUp(e) {
    if (e.keyCode==16) { shiftKeyDown = false; }
}

Однако пользователь может удерживать клавишу Shift, пока фокусируется на другом окне, поэтомумое окно никогда не слышит событие keyup.Правильно ли я считаю, что нет способа определить состояние клавиши Shift, когда окно снова получает фокус, поэтому я могу правильно обновить shiftKeyDown?

1 Ответ

1 голос
/ 04 апреля 2019

Вы можете добавить обработчик событий window.onBlur и установить для shiftKeyDown значение false, когда окна теряют фокус.

window.addEventListener("blur",onBlur,false);
function onBlur(e){ 
    shiftKeyDown = false 
}
...