Javascript onKeyDown函数

时间:2014-07-17 05:09:08

标签: javascript

我编写了一个简单的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);
});

2 个答案:

答案 0 :(得分:2)

如果你使用Ctrl来更改工作区,那么运行w / js的窗口会在keyup事件之前失去焦点。 你可以将一个事件绑定到窗口对象上,只要窗口失去焦点就会丢弃keydown:

  

window.onblur = function(){console.log(" blur");};

如果没有看到更多代码,我就不能说出那么多

答案 1 :(得分:1)

在此问题上,检测KeyDown密钥(或ControlAlt的{​​{1}}事件并非标准做法。

您应该做的是查找是否按下了所需的键。例如,如果您想在按下Shift时保存某些内容,请查找Ctrl+S键。

S