javascript - 在 jQuery 中检测单个按键事件上的多个键

标签 javascript jquery keypress jquery-events

是否有可能组合按键组合来触发单个事件?

$(document).keyup(function(e){
    if (e.keyCode == 68 && e.keyCode == 69 && e.keyCode == 86) {
        alert('oh hai');
    }
});

我已经在 Chrome 中试过了,但事件没有触发。

说我疯了,但我正在编写一个 Chrome 扩展程序,并且想将 D+E+V 键组合在一起以强制它进入隐藏的开发者模式。

最佳答案

如果你想检测dev键同时按下,你必须观察keydownkeyup 并保留下来的 map 。当它们全部关闭时,启动您的事件。

例如:Live copy | source

var map = {68: false, 69: false, 86: false};
$(document).keydown(function(e) {
    if (e.keyCode in map) {
        map[e.keyCode] = true;
        if (map[68] && map[69] && map[86]) {
            // FIRE EVENT
        }
    }
}).keyup(function(e) {
    if (e.keyCode in map) {
        map[e.keyCode] = false;
    }
});

我假设您不关心按什么顺序按下它们(因为可靠地按下会很痛苦),只要它们在某个时间点同时按下即可。

关于javascript - 在 jQuery 中检测单个按键事件上的多个键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10655202/

相关文章:

javascript - 使用 fetch 将跨域 JSON 数据发布到 Express 后端

javascript - 有没有更好的写法 if (argList[foo] === "bar"|| argList === "bar")?

javascript - Leaflet 在缩放时清除图 block 缓存

javascript - 单击按钮时触发按键

javascript - Java如何用Robot类来写_

c# - 如何在表单外捕获按键?

javascript - Knockout.js 未更新选择字段中的绑定(bind)

javascript - 防止径向渐变改变形状和大小

javascript - jQuery 获取相对于特定 div 的顶部偏移量

javascript - JavaScript 中的日期转换和日期比较