一尘不染

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

javascript

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

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

我已经在Chrome浏览器中尝试过,但该事件不会触发。

称我为疯狂,但我正在编写Chrome扩展程序,并希望同时按下D+ E+ V键将其强制为隐藏的开发人员模式。


阅读 277

收藏
2020-05-01

共1个答案

一尘不染

如果要检测的dev钥匙都在同一时间全部下来,你得看都keydownkeyup并保持地图为down的那些的。当他们全都崩溃时,请触发您的事件。

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;
    }
});

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

2020-05-01