Javascript 为什么Alt Gr的键码与Ctrl相同?

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)

我在玩这个

我注意到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)
    {
        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)。