处理组合键盘快捷键
问题描述:
我想模拟按下某个键的GMail/Twitter键盘快捷键,然后再按另一个键在jQuery中导航某处。处理组合键盘快捷键
例如,G然后H要转到GMail中的“主页”。 Twitter也有G然后H和其他“组合”快捷方式。
是否有一个模拟此行为的jQuery插件?
答
上周我刚刚发布了一个名为mousetrap的库,它内置了此功能。请查看http://craig.is/killing/mice
你可以做
Mousetrap.bind('g h', function() {
console.log('go home!');
});
+0
Tyvm为这个真棒库! – 2013-04-07 13:24:55
答
看看这个Doing key combos with jQuery/JavaScript我认为它会回答你的问题。另外this guy写他自己的非常小的插件来处理CTRL + [Any Key]侦听器,以便他可以使用CTRL + S之类的快捷方式调用保存活动文档的函数,它可能可以修改以供您使用
答
不确定插件,但你可以通过保持一个关键队列并在每个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
}
}
你的意思是这样的:https://github.com/jeresig/jquery.hotkeys帮助...? – 2011-12-19 05:01:15
我还没有看到使用jquery.hotkeys插件组合快捷方式的方法。你可以做多个按键(如Ctrl + A),但不是G,H。如果我错了,我会非常高兴,因为我已经想要使用这个插件。 – 2011-12-19 05:03:09