【问题标题】:Javascript how to listen keyboard shortcut?Javascript如何听键盘快捷键?
【发布时间】:2014-05-29 07:19:03
【问题描述】:

我尝试用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的默认快捷方式?

【问题讨论】:

  • 优先级是操作系统。如果这允许冒泡事件 - 你可以听。否则,抱歉 :( 你能想象 ALT+F4 被 Javascript 停止吗?那至少会非常烦人。
  • 由主机决定将哪些事件分派到文档中。如果文档没有收到事件,则无法响应。

标签: javascript listener keyboard-shortcuts keypress


【解决方案1】:

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

如果可以,请将快捷方式更改为独立于操作系统/浏览器的快捷方式。 避免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);
}

【讨论】:

    猜你喜欢
    • 2011-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多