当 window 获得焦点时,我可以检测是否按住了键吗?
Can I detect if key is being held down when window gains focus?
我正在跟踪 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; }
}
但是,用户可能会在将焦点放在另一个 window 上时按住 Shift 键,所以我的 window 永远听不到 keyup
事件。我认为当 window 再次获得焦点时无法检测到 shift 键的状态,所以我可以正确更新 shiftKeyDown
吗?
当 windows 失去焦点时,您可以添加一个 window.onBlur
事件监听器并将 shiftKeyDown
设置为 false。
window.addEventListener("blur",onBlur,false);
function onBlur(e){
shiftKeyDown = false
}
我正在跟踪 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; }
}
但是,用户可能会在将焦点放在另一个 window 上时按住 Shift 键,所以我的 window 永远听不到 keyup
事件。我认为当 window 再次获得焦点时无法检测到 shift 键的状态,所以我可以正确更新 shiftKeyDown
吗?
当 windows 失去焦点时,您可以添加一个 window.onBlur
事件监听器并将 shiftKeyDown
设置为 false。
window.addEventListener("blur",onBlur,false);
function onBlur(e){
shiftKeyDown = false
}