简体   繁体   English

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

[英]Can I detect if key is being held down when window gains focus?

I am tracking keyDown and keyUp to show whether or not the shift key is being pressed in JavaScript: 我正在跟踪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; }
}

However, the user might hold the shift key down while giving focus to another window, so my window never hears the keyup event. 但是,用户在将焦点移到另一个窗口时可能会按住Shift键,因此我的窗口从没有听到keyup事件。 Am I right in thinking that there is no way to detect the state of the shift key when the window gains focus again, so I can correctly update shiftKeyDown ? 我是否认为在窗口再次获得焦点时无法检测Shift键的状态是正确的,所以我可以正确地更新shiftKeyDown

You can add a window.onBlur eventlistener and set shiftKeyDown to false, when the windows loses focus. 当窗口失去焦点时,您可以添加window.onBlur侦听器,并将shiftKeyDown设置为false。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 在ExtJS中,使用DataView,如何检测到密钥被锁定? - In ExtJS, Using a DataView, How Can You Detect A Key Held Down? 如何检查一个键(在键盘上)是否被按住? - How to check if a key (on the keyboard) is being held down? 如何检测何时在 js 中按住按钮? - How can I detect when a button is held in js? 按住键时连续移动 - Continuous movement when a key is held down 如何检测鼠标左键在 javascript 中被按住 - How to detect mouse left button is being held down in javascript 我正在使用JavaScript窗口对象功能在运行选项卡的应用程序获得焦点时及时调用Rails控制器吗? - I am using javascript window object function to timely call rails controller on when the tab running application gains focus? 如何在获得焦点后立即将输入的值存储在 javascript 中? - How can I store the value of an input in javascript as soon as it gains focus? HTML Canvas:按住键时控制键按下注册表 - HTML Canvas: Controlling keydown registry when key is held down 当按住箭头键时,如何在Firefox中获得自动重复的keydown事件? - How can I get auto-repeated keydown events in Firefox when arrow keys are held down? 你能模拟在事件运行之前按住的 shift 键吗 - Can you emulate the shift key being held before the event runs
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM