“Keymaster 是一个简单的微型库,用于在 Web 应用程序中定义和调度键盘快捷键。”
有没有好的方法可以进行多键键盘组合。例如,在 Gmail 中,按 g 再按 i 将转到收件箱。如果 keymasterjs 不支持它,那么是否有一种 Eloquent 方法来做到这一点(我可能会 fork keymaster 并添加此功能)。
Keymaster 没有依赖项。我很乐意保持这种状态...谢谢!
最佳答案
我不知道 keymaster,但您可以使用按键事件处理程序中的计时器 (setTimeout) 轻松完成此操作。不要在按下按键时立即采取行动,而是将按键添加到缓冲区,然后等待第二个按键,直到超时到期。
在代码中,这将是这样的:
var keyBuffer = [],
timer;
document.addEventListener('keypress', function(e) {
// Add current key to buffer
keyBuffer.push(e.which);
// Cancel previous timer
clearTimeout(timer);
// Set new timer
timer = setTimeout(function() {
// Pass a *copy* of the buffer into another function
reactOnKey(keyBuffer.slice(0));
// Clear buffer
keyBuffer.length = 0;
}, 1000)
}, false);
function reactOnKey(buffer) {
console.log(buffer);
}
关于javascript - 键盘组合快捷键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18219258/