【问题标题】:HTML\Javascript - get ATL\CTRL\SHIFT key pressHTML\Javascript - 获取 ALT\CTRL\SHIFT 按键
【发布时间】:2012-07-26 21:11:18
【问题描述】:

是否有能力捕捉任何按键?即 Ctrl + Shift + Alt 按键(没有其他按键)。

在下面的 sn-p 中(在 Chrome 下检查),我只能在按下其他“常规”键时捕捉到转变。

更新

<html>
<head>
    <script>
        function onKeyPressed(event) {
            event = event || window.event;
            var code = event.keyCode;
            var key = String.fromCharCode(event.keyCode);
            var shift = event.shiftKey;
            var alt = event.altKey;
            var ctrl = event.ctrlKey;
            var which = event.which;
            var str = "code = " + code + "\n" +
                      "key = " + key + "\n" +
                      "shift = " + shift + "\n" +
                      "alt = " + alt + "\n" +
                      "ctrl = " + ctrl + "\n" +
                      "which = " + which;
            alert(str);
        };

        function onClick(event) {
            event = event || window.event;
            var x = event.clientX;
            var y = event.clientY;
            var str = "x = " + x + "\n" +
                      "y = " + y;
            alert(str);
        };

        function onKeyUp(event) {
            alert("onKeyUp");
        };

        function onKeyDown(event) {
            alert("onKeyDown");
        }
    </script>
</head>
<body onmousedown="onClick(event)" onkeypress="onKeyPressed(event)" onkeyup="onKeyUp(event)" onkeydown="onKeyDown(event)"></body>
</html>

如何捕获这些密钥?

【问题讨论】:

  • 不就是if(event.keyCode == x)其中x是shift/ctrl/alt的键码吗?
  • 又一个 jQuery 解决方案,我不会用它来钓鱼 :) craig.is/killing/mice
  • 糟糕,抱歉,the duplicate I found 是 jQuery 特有的。尽管如此,很容易适应,我认为它唯一的 jQuery 方面是挂钩事件,这很容易修改。

标签: javascript


【解决方案1】:

有一个非常棒的新 JS 库,可以很好地跟踪浏览器中的键盘事件。

它叫捕鼠器。这是链接:http://craig.is/killing/mice

希望对您有所帮助。

【讨论】:

    【解决方案2】:

    允许使用 jQuery 吗?如果是这样,看看这个:

    http://www.stepanreznikov.com/js-shortcuts/

    否则你可以给@Max Gherkins 的建议一个机会

    【讨论】:

    • 我喜欢这个主意! :) 谢谢,但我正在寻找一种本地方式来实现它。
    • 好的 @MrRoth - 看看 craig.is/killing/mice 它会为您解决问题! :)
    • 再次感谢您! :) 但我不想使用图书馆,我想自己写一个。那么有什么诀窍而不是对代码进行逆向工程呢?
    【解决方案3】:

    AFAIK 您必须使用 keyup 或 keydown 事件来捕获移位,keyPress 不会捕获它。如果您需要更多详细信息,请查看每个事件捕获的键的 this list。由于 shift 是修饰键,因此不会被捕获。为什么会这样,我无法解释。

    【讨论】:

    • 请看我的更新。我已经包含了onkeydownonkeyup 处理程序,尽管按下键时只调用onkeydown
    猜你喜欢
    • 2018-06-30
    • 1970-01-01
    • 2020-10-30
    • 1970-01-01
    • 1970-01-01
    • 2012-08-15
    • 1970-01-01
    • 2012-04-02
    • 1970-01-01
    相关资源
    最近更新 更多