Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检测Chrome中的Alt键_Javascript_Google Chrome_Keyboard Events - Fatal编程技术网

Javascript 检测Chrome中的Alt键

Javascript 检测Chrome中的Alt键,javascript,google-chrome,keyboard-events,Javascript,Google Chrome,Keyboard Events,在我的应用程序中,我需要按Alt键/释放来切换工具提示上的其他信息。然而,第一次按下Alt键时,文档会失去键盘焦点,因为它会进入Chrome的菜单。如果单击文档的任何部分,它将再次工作(一次) 我可以通过调用preventDefault来避免这种情况,但这也会禁用键盘快捷键,如Alt+Left/Right,这是不可取的 我还可以处理mousemove和检查altKey标志,但当东西只在移动鼠标时更新时,它看起来非常尴尬 在我的情况下,有什么方法可以可靠地检测当前的Alt键状态吗?我真的不想换一把

在我的应用程序中,我需要按Alt键/释放来切换工具提示上的其他信息。然而,第一次按下Alt键时,文档会失去键盘焦点,因为它会进入Chrome的菜单。如果单击文档的任何部分,它将再次工作(一次)

我可以通过调用
preventDefault
来避免这种情况,但这也会禁用键盘快捷键,如Alt+Left/Right,这是不可取的

我还可以处理
mousemove
和检查
altKey
标志,但当东西只在移动鼠标时更新时,它看起来非常尴尬

在我的情况下,有什么方法可以可靠地检测当前的Alt键状态吗?我真的不想换一把不同的钥匙

更新:我认为最好的解决方案是仅在工具提示处于活动状态时调用
preventDefault

  document.addEventListener("keydown", (e) => {
    if (this.curComponent) e.preventDefault();
    if (e.which === 18) {
      this.outer.classList.add("AltKey");
    }
  });
  document.addEventListener("keyup", (e) => {
    if (this.curComponent) e.preventDefault();
    if (e.which === 18) {
      this.outer.classList.remove("AltKey");
    }
  });

左右两侧的键盘值ALT=18

jQuery:

$(document).keyup(function(e){
    if(e.which == 18){
      alert("Alt key press");
    }
});
JavaScript

document.keyup = function(e){
  if(e.which == 18){
    alert("Alt key press");
  }
}

我也遇到了同样的问题,我解决了这个问题:


返回true
恢复Alt+左/右chrome键盘快捷键的正常行为

我知道如何设置事件,但它不起作用。请阅读问题。另外,17是Ctrl,不是Alt。对我来说不起作用。我在Ubuntu 19.04上使用Chrome。
document.addEventListener("keyup", (e) => {
    if (e.key === "Alt") {
        return true; // Instead of e.preventDefault();
    });