按shift + a + s [重复]键盘事件不起作用

问题描述 投票:2回答:2

这个问题在这里已有答案:

$(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 html5
2个回答
-4
投票

正如@putvande所说,你一次只能检测到一个按键,我建议你检测多个keydown组合,如下所示:

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/

EDIT:

我只是通过警报替换你的window.location.replace()“确保打开控制台看看发生了什么!” :-)


-3
投票

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

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);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.