处理组合键盘快捷键

时间:2011-12-19 04:53:58

标签: javascript jquery

我想模拟按下键的GMail / Twitter键盘快捷键,然后用另一个键在jQuery中的某个地方导航。

例如, G 然后 H 在GMail中转为“Home”。 Twitter还有 G 然后 H 和其他“组合”快捷方式。

是否有一个模拟此行为的jQuery插件?

4 个答案:

答案 0 :(得分:8)

我上周刚刚发布了一个名为mousetrap的库,内置了这个功能。查看http://craig.is/killing/mice

你可以做到

Mousetrap.bind('g h', function() {
    console.log('go home!');
});

答案 1 :(得分:1)

不确定插件,但是你可以通过保留一个密钥队列并在每个mouseup上处理该队列来实现这一目的。

即。类似的东西:

var myKeyQueue = [];

$(document).keydown(function(e) {
    var code e.charCode != 0 ? e.charCode : e.keyCode;
    myKeyQueue.push(code);
});

$(document).keyup(function(e) {
    processKeyQueue();
});

你的processKeyQueue函数将是:

function processKeyQueue() {

    // check if the Q contains any actionable key-combo, if so do it!
    /*
    if(myKeyQueue.length == 2) {
        if(String.fromCharCode(myKeyQueue[0]) == 'G' &&  String.fromCharCode(myKeyQueue[0]) == 'H') {
            // you code here ...
        }
    }
    */

    if(myKeyQueue.length >= 2) {
        myKeyQueue = []; // remove all keys in Q
    }
}

答案 2 :(得分:0)

看看这个Doing key combos with jQuery / JavaScript我认为它会回答你的问题。另外this guy编写了他自己的非常小的插件来处理CTRL + [Any Key]监听器,这样他就可以使用CTRL + S这样的快捷方式来调用保存活动文档的函数,它可能会被修改以供你使用

答案 3 :(得分:0)

我认为:http://www.openjs.com/scripts/events/keyboard_shortcuts/ 可能会以某种方式帮助您添加自己的快捷方式