[英]Javascript onKeyDown function
我编写了一个简单的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事件之前失去焦点。 您可以将事件绑定到窗口对象,只要窗口失去焦点就会丢弃keydown:
window.onblur = function(){console.log(“blur”);};
没有看到更多的代码,我不能说更多
检测Control
键的KeyDown
事件(或Alt
,或Shift
)不是标准做法。
您应该做的是查找是否按下了所需的键。 例如,如果要在Ctrl+S
时保存某些内容,请查找S
键。
var keyCode = (e.which) ? e.which : e.keyCode; // keyCode will be 'S'
if (e.ctrlKey && keyCode == 83) {
// Ctrl + S pressed. Do stuff.
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.