Javascript 为什么Alt Gr的键码与Ctrl相同?
我在玩这个 我注意到Alt Gr的键码在IE10中是17,在Chrome中是17和18 有人能解释一下为什么它不是18(或者一个全新的数字),为什么我在Chrome上有两个弹出窗口 代码如下:Javascript 为什么Alt Gr的键码与Ctrl相同?,javascript,keycode,Javascript,Keycode,我在玩这个 我注意到Alt Gr的键码在IE10中是17,在Chrome中是17和18 有人能解释一下为什么它不是18(或者一个全新的数字),为什么我在Chrome上有两个弹出窗口 代码如下: document.onkeyup = KeyCheck; function KeyCheck(e) { var KeyID = (window.event) ? event.keyCode : e.keyCode; alert(KeyID); switch (KeyID)
document.onkeyup = KeyCheck;
function KeyCheck(e) {
var KeyID = (window.event) ? event.keyCode : e.keyCode;
alert(KeyID);
switch (KeyID)
{
case 18:
document.Form1.KeyName.value = "Alt";
break;
case 17:
document.Form1.KeyName.value = "Ctrl";
break;
}
}
这不是我的代码,我只是偶然发现了它
EDIT:我相信Alt Gr意味着同时使用Ctrl+Alt,因为一些需要Alt Gr likeé的东西也可以使用Ctrl+Alt。问题是,
警报会停止代码的执行,因此第二个onkeyup
不会被调用。通过将函数更改为
function KeyCheck(e)
{
var KeyID = (window.event) ? event.keyCode : e.keyCode;
switch(KeyID)
{
case 18:
document.Form1.KeyName.value = document.Form1.KeyName.value+"Alt";
break;
case 17:
document.Form1.KeyName.value = document.Form1.KeyName.value+"Ctrl";
break;
}
}
我们可以看到,Alt
和Ctrl
都被调用
使用Firefox 22和IE 9进行测试。AltGr
=CTRL
+ALT
,但在编辑之后,您似乎已经知道了这一点。当按下AltGr
时,Chrome似乎会触发两次按下。有趣的是,Chrome没有说“选中此框以防止页面创建多个对话框”。这是创建警报的不同来源。如果你按同一个键两次,你会得到复选框。你确定IE吗?我刚刚用IE和Firefox检查了它,我得到了Alt和Ctrl(删除警报
,并将其更改为附加到表单中,第一个警报
似乎阻止了第二个onkeyup
的触发)。顺便说一句,你可能不依赖这一点。在我的带有德语键盘布局的Linux机器上,AltGr
是一个不同的键码,即225(Ctrl
:17,Alt
:18)。