Javascript 按键时检测Alt Gr(Alt图形)修改器
在javascriptJavascript 按键时检测Alt Gr(Alt图形)修改器,javascript,google-chrome,keyboard,Javascript,Google Chrome,Keyboard,在javascript事件对象中,有一些布尔值用于检查是否按下了修改器键: ctrlKey:按CTRL键 altKey:ALT键 altLeft:按altLeft键。只为IE altGraphKey:ALTGR键。仅适用于Chrome/Safari 但是,也存在一些问题: 按下ALTGR修改器时,IE和Chrome将ctrlKey设置为true,并将altKey设置为true 当您按下ALTGR修改器时,Firefox会将ctrlKey设置为false,将altKey设置为true,因为只
事件
对象中,有一些布尔值用于检查是否按下了修改器键:
:按CTRL键ctrlKey
:ALT键altKey
:按altLeft键。只为IEaltLeft
:ALTGR键。仅适用于Chrome/SafarialtGraphKey
- 按下ALTGR修改器时,IE和Chrome将
设置为ctrlKey
,并将true
设置为altKey
true
- 当您按下ALTGR修改器时,Firefox会将
设置为ctrlKey
,将false
设置为altKey
,因为只按下了ALTtrue
- Chrome具有
属性,但它始终是altGraphKey
未定义的
有网页在线检查钥匙代码。希望这能有所帮助。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
if (event.ctrlKey && event.altKey) {
// Appears to be Alt Gr
}
值得一提的是,在现代浏览器中,通过检查alt键事件的位置可以检测到这一点
请参阅:免责声明:我没有带此键的键盘,因此我无法测试自己,但规范说明可以使用此属性。如果您只需要支持实现它的浏览器(在编写本文时,只有Safari不支持),那么这可能是一个很好的解决方案。您可以检查该值是否为
window.onkeydown=函数(e){
如果(e.key=='AltGraph'){
控制台日志(e.key);
}
};代码>是的,这是谷歌Chrome的一个bug,在金丝雀中可以正常工作,在Opera和Firefox中也可以。检查:当前浏览器行为(2013年9月)不同。请参阅下面的答案。@zuluk感谢您的通知。你能确认它在其他浏览器中是否有效吗?@zuluk,这很有趣。我想知道这些对你是否有用?这个答案在Windows10下的Chrome67上,无论是物理键盘还是屏幕键盘都能完美地工作。它还区分了AltGr和Ctrl+Alt,所以它是我首选的Chrome解决方案。请参阅:Firefox和Edge仍然不起作用。按CTRL+ALT+S与按ALTGR+S不同。我使用的是US Int键盘布局,我刚刚遇到一个问题,我想用visual studio代码键入一个德语字符(基于电子)。我看到的不是一个ß字符,而是“运行任务”菜单(快捷键CTRL+ALT+S)向我扑来。在我看来,这是一个错误。当你在德国键盘上按AltGr+Q时,同样的事情也会发生。它应该发出@字符,但会通知CTRL+ALT+QJavaScript键盘快捷方式处理程序。有趣的是,我只能在Windows上复制它——在Linux中,@字符正确地发出。我也认为这是一个bug,但是在Windows上,Edge、Firefox和Chrome的行为是一致的?我很困惑。。。