【问题标题】:keyup event does not work by pressing shift + a + s [duplicate]按下 shift + a + s 后,keyup 事件不起作用 [重复]
【发布时间】:2019-03-16 22:10:33
【问题描述】:

$(document).keyup(function(e) {

  if (e.shiftKey && e.keyCode == 65 && e.keyCode == 83) {

    url = "https://stackoverflow.com/";

    window.location.replace(url);
  }

});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

【问题讨论】:

标签: javascript html


【解决方案1】:

我制作了一个日志功能,这样您就可以看到正在使用的密钥代码。并使用回车键进行设置。

document.body.addEventListener('keyup', logKey);
function logKey(e) {
    console.log(`KeyCode: ${e.code}`)
    if (e.code === 'KeyS' || e.code === 'Enter') {
        let url = "https://stackoverflow.com/";
        window.location.replace(url);
    }
}

【讨论】:

    【解决方案2】:

    正如@putvande 所说,您一次只能检测一个按键,我建议您的一个技巧是检测多个按键组合,如下所示:

    let shiftkey_press = false;
    let A_press = false;
    let S_press = false;
    document.onkeydown = function(e) {
    
      if (e.shiftKey ) {
        shiftkey_press = true;
      }
      if (e.keyCode == 65 ) {
        A_press = true;
      }
      if (e.keyCode == 83 ) {
        S_press = true;
      }
        console.log("shiftkey_press:", shiftkey_press)
        console.log("A_press:", A_press)
        console.log("S_press:", S_press)
    
      if (shiftkey_press && A_press && S_press ){
        url = "https://stackoverflow.com/";
    
        // window.location.replace(url);
        alert(url);
      }
    
    }
    

    是的,我知道...这有点讨厌,但我认为它会成功,请告诉我它是否有效!

    一个工作示例:https://jsfiddle.net/b7an8L12/

    编辑:

    我只是用 alert() 替换你的 window.location.replace “一定要打开控制台看看发生了什么!” :-)

    【讨论】:

      猜你喜欢
      • 2017-11-10
      • 1970-01-01
      • 1970-01-01
      • 2012-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多