2011-12-19 146 views
2

我想模拟按下某个键的GMail/Twitter键盘快捷键,然后再按另一个键在jQuery中导航某处。处理组合键盘快捷键

例如,G然后H要转到GMail中的“主页”。 Twitter也有G然后H和其他“组合”快捷方式。

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

+0

你的意思是这样的:https://github.com/jeresig/jquery.hotkeys帮助...? – 2011-12-19 05:01:15

+0

我还没有看到使用jquery.hotkeys插件组合快捷方式的方法。你可以做多个按键(如Ctrl + A),但不是G,H。如果我错了,我会非常高兴,因为我已经想要使用这个插件。 – 2011-12-19 05:03:09

回答

7

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

你可以做

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

Tyvm为这个真棒库! – 2013-04-07 13:24:55

0

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

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