我编写了一个简单的 javascript 代码并为 onKeyDown/onKeyUp
添加了事件监听器。它工作得很好,并根据需要检测 Control 键。但是,即使我使用操作系统快捷方式,Control 键也会显示按下。
具体来说,我在 Ubuntu 上并使用 Ctrl+Alt+ arrow keys
来切换工作区。因此,当我切换工作区并返回 Chrome 时,它显示已按下 Control
键。
我不介意,但即使释放快捷键,也不会调用 onkeyup
方法,因此状态显示 Ctrl
键已按下。
我如何避免这种情况?
下面是我的代码:
function keypressedfn(e){
if(e.which == CTRL_KEY){
console.log("isCtrl pressed");
isCtrl=true;
if(isWheel){
e.preventDefault();
e.stopPropagation();
}
}
};
function keyreleasedfn(e){
if(e.which == CTRL_KEY){
console.log("isCtrl released");
isCtrl=false;
isWheel=false;
}
};
$(document).ready(function(){
$(document).keydown(keypressedfn);
$(document).keyup(keyreleasedfn);
});
最佳答案
如果您使用 Ctrl 来更改工作区,那么您的窗口 w/js 运行在 keyup 事件之前失去焦点。
您可以将事件绑定(bind)到 window 对象,该事件在窗口失去焦点时丢弃 keydown:
没有看到更多你的代码,我不能说更多
关于Javascript onKeyDown 函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24795306/