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

Ada*_*dam 10 javascript keycode

我正在玩这个剧本.

而且我注意到Alt GrKeyCode 在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;
    }
}
Run Code Online (Sandbox Code Playgroud)

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

编辑:有更多的游戏我相信Alt Gr意味着Ctrl+ Alt同时,因为一些需要Alt Gré的东西也适用于Ctrl+ Alt.

Dah*_*aka 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

我们可以看到两者AltCtrl被调用。

使用 Firefox 22 和 IE 9 进行测试。