18

在 javascriptEvent对象中,有一些布尔值来检查是否按下了修饰键:

  • ctrlKey:CTRL关键。
  • altKey:ALT关键。
  • altLeft:ALT左键。仅适用于 IE。
  • altGraphKey:ALTGR关键。仅适用于 Chrome/Safari。

但是,有一些问题:

  • 当您按下 ALTGR 修饰符时,IE 和 Chrome 将设置为ctrlKeytruealtKeytrue
  • 当您按下 ALTGR 修饰符时, Firefox 会设置ctrlKeyfalsealtKeytrue因为只有 ALT 被按下。
  • Chrome 有这个altGraphKey属性,但它始终是undefined.

问题:如何区分ALT+CTRLALTGR按键?特别是在 Chrome 中。

4

4 回答 4

12

webkit 浏览器中的 altGraphKey 似乎不再存在(截至 2013 年 9 月),Firefox 的行为也发生了变化。键的浏览器行为AltGr当前似乎是:

  • Webkit (Chrome) - ctrlKey: true, altKey: true
  • IE 8 - ctrlKey:假,altKey:真
  • IE 10 - ctrlKey:真,altKey:真
  • Mozilla (Firefox) - ctrlKey: true, altKey: true

也就是说,它们当前都是一致的(除了 IE8,它仍然始终不一致)。

以下代码段应该在现代浏览器中捕获Alt Gr- 但不是Alt或-。Ctrl但是,您将需要 IE8 的特殊情况:

if (event.ctrlKey && event.altKey) {
    // Appears to be Alt Gr
}
于 2013-09-02T09:43:32.330 回答
4

免责声明:我没有具有此键的键盘,因此无法测试自己,但规范说可以使用该key属性。如果您只需要支持实现它的浏览器(在撰写本文时,只有 Safari 不支持),这可能是一个很好的解决方案。您可以检查该值是否为"AltGraph".

window.onkeydown = function (e) {
  if (e.key === 'AltGraph') {
    console.log(e.key);
  }
};

于 2016-09-09T13:29:28.787 回答
1

我猜ALTGRkey 和CTRL+ ALTkey 组合是一回事,并且没有办法在 Javascript 中有所作为。按ALTGR+eCTRL+ ALT+e都会在我的键盘/语言设置上产生 €(欧元)符号。网上有一些页面可以检查键码。希望这可以帮助。

于 2012-10-28T10:31:22.233 回答
1

值得一提的是,可以通过检查 alt 键事件的位置在现代浏览器中检测到这一点。

请参阅:有没有办法检测按下 Alt 键的哪一侧(右侧或左侧)?

于 2016-01-11T15:53:42.603 回答