javascript - 键盘组合快捷键

标签 javascript keyboard-shortcuts keymasterjs

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

http://jsfiddle.net/pGdsR/

关于javascript - 键盘组合快捷键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18219258/

相关文章:

javascript - 如何向对象数组添加新字段,或将一个数组中的值插入另一个数组 - JS

javascript - 从 TabNavigator 内部 View 与 StackNavigator 的导航选项交互

c# - 我如何能?服务器(ASP.NET)中的简单打乱/加密字符串和 JavaScript 中的解扰/解密

javascript - 如何向 SimpleMDE 添加自定义 Markdown 功能?

windows - 微软关于 future Windows 键使用的声明?

r - 如何将代码从控制台复制到 Rstudio 中的编辑器/源代码 Pane

Netbeans 8 个显示参数和显示返回值的快捷方式