Javascript如何监听键盘快捷键

Javascript how to listen keyboard shortcut?

本文关键字:键盘 快捷键 监听 何监听 Javascript      更新时间:2023-09-26

我尝试使用javascript来监听键盘的快捷方式,例如"command+shift+4"
我目前的解决方案是:[在Mac上]

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

但由于快捷方式"command+shift+4"是Mac的默认"屏幕截图",因此javascript无法捕捉到它。如果我将52改为53,则此代码有效,但它会听"command+shift+5"。
有没有什么解决方案可以让javascript监听Mac的默认快捷方式?

您的浏览器正在您的操作系统下运行。如果您在操作系统级别上"捕获"了按键事件,但不让它通过(想象一下e.stopPropagation()),则无法在浏览器中捕获它。这与您试图将某个东西绑定到Alt+F4是一样的——该事件在到达浏览器的页面上事件之前得到处理。有些可能通过,有些可能不通过。

如果可以,请将快捷方式更改为独立于操作系统/浏览器的快捷方式。避免使用这些键盘快捷键。此外,您可能还想阅读这个SO问题。

要确保您的快捷方式被正确识别,只需按键输出即可

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);
}