M4N*_*M4N 6 javascript hotkeys
我想在Web应用程序中实现键盘热键.到目前为止,我一直在使用jquery.hotkeys插件,它允许我实现简单的热键(例如单键击a).
现在要通过键盘支持一些更复杂的导航,我想实现像gmail一样的"多键"热键,例如按下g(对于'go')然后i(对于'inbox')将你带到收件箱.
有没有人知道该任务的javascript组件(jquery插件或类似)?或者,实施此类热键的好方法是什么?
使用keymaster和keymaster-sequence插件有一个更好的解决方案.
消息来源在这里keymaster.js和这里keymaster.sequence.js
像这样使用它们:
<script type="text/javascript" src="https://raw.github.com/madrobby/keymaster/master/keymaster.min.js"></script>
<script type="text/javascript" src="https://raw.github.com/chevalric/keymaster-sequence/master/keymaster.sequence.min.js"></script>
<script>
key.sequence(["g","i"], function () {
var el = document.getElementById("result");
el.innerHTML = "You first pressed 'g', then you pressed 'i'";
});
</script>
<div id="result"></div>
Run Code Online (Sandbox Code Playgroud)
这是一个小型演示http://jsfiddle.net/Nwdyd/1/,它还显示了碰撞处理(绑定g以及g i)
g按下时设置全局布尔值。然后检查它是否在i按下时设置。您可以选择在g印刷机上实施超时,以便您有有限的时间进行印刷i。
var goPressed = false;
function hotkeyPressed (event) {
if (event.keyCode == KEYCODE_FOR_G) {
goPressed == true;
//Optionally:
setTimeout(clearPresses, 3000);
}
if (event.keyCode == KEYCODE_FOR_I && goPressed) {
gotoInbox();
}
}
function clearPresses() {
goPressed = false;
}
Run Code Online (Sandbox Code Playgroud)