我正在跟踪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
吗?
答案 0 :(得分:1)
当窗口失去焦点时,您可以添加window.onBlur
事件监听器并将shiftKeyDown
设置为false。
window.addEventListener("blur",onBlur,false);
function onBlur(e){
shiftKeyDown = false
}