我可以检测当窗口获得焦点时是否按住键吗?



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

您可以添加一个window.onBlur事件侦听器,并在窗口失去焦点时将shiftKeyDown设置为 false。

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

相关内容

  • 没有找到相关文章

最新更新