在javascript Event
对象中,有一些布尔值可以检查是否按下了修改键:
ctrlKey
: CTRL key。altKey
: ALT key。altLeft
: ALT 左键。仅适用于IE。altGraphKey
: ALTGR 键。仅适用于Chrome / Safari。但是,有一些问题:
ctrlKey
设置为true
并将altKey
设置为true
。ctrlKey
设置为false
并将altKey
设置为true
,因为只按了ALT。altGraphKey
属性,但始终为undefined
。问题:如何区分 ALT + CTRL 或 ALTGR 按键?特别是在Chrome中。
答案 0 :(得分:11)
webkit浏览器中的altGraphKey似乎不再存在(截至2013年9月),并且Firefox的行为已发生变化。 AltGr 键的浏览器行为当前显示为:
也就是说,它们目前都是一致的(除了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)?