当窗口获得焦点时,我能否检测到按键是否被按下?

问题描述 投票:0回答:1

我正在跟踪keyDown和keyUp以显示是否在JavaScript中按下了shift键:

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事件。我是否认为当窗口再次获得焦点时无法检测到移位键的状态,所以我可以正确更新shiftKeyDown

javascript keyboard-events onfocus
1个回答
1
投票

当窗口失去焦点时,您可以添加window.onBlur eventlistener并将shiftKeyDown设置为false。

window.addEventListener("blur",onBlur,false);
function onBlur(e){ 
    shiftKeyDown = false 
}
© www.soinside.com 2019 - 2024. All rights reserved.