为什么Alt Gr与Ctrl具有相同的keyCode?

时间:2013-07-25 11:58:11

标签: javascript keycode

我正在玩这个script

我注意到IE5中 Alt Gr 的KeyCode 17 ,Chrome中 17 AND 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;
    }
}

这不是我的代码,我只是偶然发现它。

编辑:更多的游戏我相信 Alt Gr 意味着 Ctrl + Alt 时间,因为一些需要 Alt Gr 的事情,如é也适用于 Ctrl + Alt

1 个答案:

答案 0 :(得分:4)

问题是alert停止执行代码,因此不会调用第二个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;
    }
}

我们可以看到AltCtrl都被调用。

使用Firefox 22和IE 9测试。