【问题标题】:Why does Alt Gr have the same keyCode as Ctrl?为什么 Alt Gr 的 keyCode 与 Ctrl 相同?
【发布时间】:2013-07-25 11:58:11
【问题描述】:

我在玩这个script

我注意到 Alt Gr 的 KeyCode 在 IE10 中是 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

【问题讨论】:

  • AltGr === CTRL + ALT,尽管在您编辑之后看起来您已经知道了。当按下AltGr时,看起来Chrome触发器都被按下了。
  • 有趣的是 chrome 怎么没说“勾选这个框来防止页面创建多个对话框”
  • 创建警报的来源不同。如果您按两次相同的键,您将获得复选框。
  • 您确定使用 IE 吗?我刚刚用 IE 和 Firefox 检查了它,我得到了 Alt 和 Ctrl(删除 alert,并将其更改为 append 到表单,第一个 alert 似乎停止了第二个onkeyup 来自解雇)。
  • 顺便说一句,你可能不依赖这个。在我使用德语键盘布局的 Linux 机器上,AltGr 是一个不同的键码,即 225 (Ctrl: 17, Alt: 18)。

标签: javascript keycode


【解决方案1】:

问题是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 测试。

【讨论】:

    猜你喜欢
    • 2015-10-28
    • 1970-01-01
    • 2016-09-25
    • 2022-07-21
    • 2012-05-26
    • 2018-12-15
    • 2016-08-20
    • 2013-07-28
    相关资源
    最近更新 更多