按键时检测Alt Gr(Alt Graph)修改器

时间:2012-05-18 17:44:10

标签: javascript google-chrome keyboard

在javascript Event对象中,有一些布尔值可以检查是否按下了修改键:

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

但是,有一些问题:

  • 当您按下ALTGR修饰符时,IE和Chrome将ctrlKey设置为true并将altKey设置为true
  • 当您按下ALTGR修饰符时,Firefox会将ctrlKey设置为false并将altKey设置为true,因为只按了ALT。
  • Chrome具有altGraphKey属性,但始终为undefined

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

4 个答案:

答案 0 :(得分:11)

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

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

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

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

if (event.ctrlKey && event.altKey) {
    // Appears to be Alt Gr
}

答案 1 :(得分:2)

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

答案 2 :(得分:2)

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

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

答案 3 :(得分:1)

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

请参阅:Is there a way to detect which side the Alt key was pressed on (right or left)?