Javascript如何监听键盘快捷键?
我尝试使用javascript来监听键盘的快捷键,如“command+shift+4”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
我当前的解决方案是:[在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阻止吗?那至少会非常烦人。它将哪些事件发送到文档中取决于主机。如果文档没有得到事件,它将无法响应。