如何处理按下JS(组合键)上的C + /键并调用某些功能?

问题描述 投票:1回答:3
const cKeycode = 67; 
const SlashKeyCode = 191; 
document.onkeyup = function(e){  
 var e = e || window.event;   
 if(e.keyCode==cKeycode && e.which == SlashKeyCode) {
   alert("C+/ pressed");
   return false;   
  }
}

我刚刚尝试了这一个和许多其他变体,但我无法处理。也许有人知道更好的方法

javascript keyboard-shortcuts
3个回答
0
投票

onkeyup事件不会返回已按下键的集合,它只会一次返回一个键。此外,如果实际释放某个键,onkeyup只会触发,因此,如果您想知道何时按下两个键,则需要利用onkeydown事件。

为此,创建一个全局布尔变量,该变量声明是否实际按下了第一个按钮,如果确实已按下,请检查是否也按下了第二个键。

这里是一个例子。为简单起见,我使用a和e键。

const AKeycode = 65;
const EKeycode = 69;
let AKeycodeDown = false;

document.onkeydown = function(e) {
  if (e.keyCode == AKeycode) {
    AKeycodeDown = true;
  }
  if (AKeycodeDown && e.keyCode == EKeycode) {
    alert("A+E pressed");
  }
}

document.onkeyup = function(e) {
  if (e.keyCode == AKeycode) {
    AKeycodeDown = false;
  }
}

0
投票

您的代码无效,因为该事件一次仅传递一个键(不包括ctrl和alt之类的键)。为了解决这个问题,我们可以存储是否按下了任何一个键,然后在按下第二个键时进行检查。 无论用户按下c 然后


0
投票

您可以尝试这个。

© www.soinside.com 2019 - 2024. All rights reserved.