Javascript如何听键盘快捷键?

时间:2014-04-15 05:18:57

标签: javascript listener keyboard-shortcuts keypress

我尝试用javascript听键盘的快捷键,如"命令+ shift + 4"
我目前的解决方案是:[在Mac上]

window.addEventListener('keypress', function(e){
    if (e.shiftKey && e.metaKey && e.keyCode == 52) {
        alert("Here it is.");
    }
}, false);

但是由于快捷方式"命令+ shift + 4"是默认的"截图" Mac,所以javascript无法捕获它。如果我将52更改为53,则此代码有效,但它会监听"命令+ shift + 5"。
是否有一些解决方案让javascript听默认的Mac快捷方式?

1 个答案:

答案 0 :(得分:3)

您的浏览器正在您的操作系统下运行。如果您在操作系统级别“捕获”按键事件并且不让它通过(想象e.stopPropagation()),则无法在浏览器中捕获它。这就像你试图将某些内容绑定到Alt+F4一样 - 这个事件在它到达浏览器的页面上事件之前就被处理了。有些可能会通过,有些可能不通过。

如果能够,请将快捷方式更改为独立于OS /浏览器的快捷方式。 避免使用these keyboard shortcuts。您也可以read this SO question.

要确保正确识别您的快捷方式,只需输入您的按键

即可
window.onkeyup = function(e){
    var pressed = "";
    if(e.shiftKey){
        pressed += " + Shift";
    }else if(e.ctrlKey){
        pressed += " + Ctrl";
    } //and so on
    pressed += e.keyCode;
    console.log(pressed);
}