Javascript如何监听键盘快捷键?

Javascript如何监听键盘快捷键?,javascript,listener,keyboard-shortcuts,keypress,Javascript,Listener,Keyboard Shortcuts,Keypress,我尝试使用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

我尝试使用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
是一样的-此事件在到达浏览器的页内事件之前被处理。有些可能通过,有些可能不通过

如果可以,请将快捷方式更改为独立于操作系统/浏览器的快捷方式。 避免。你可能也想

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

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

优先级是操作系统。如果这能让事件产生泡沫,你可以收听。否则,对不起:(你能想象ALT+F4被Javascript阻止吗?那至少会非常烦人。它将哪些事件发送到文档中取决于主机。如果文档没有得到事件,它将无法响应。