2

Keymaster是一个简单的微型库,用于在 Web 应用程序中定义和调度键盘快捷键。”

有没有很好的方法来做多键键盘组合。例如,在 Gmail 中,按g紧接着按i会将您带到您的收件箱。如果 keymasterjs 不支持它,那么是否有一种雄辩的方法可以做到这一点(我可能会分叉 keymaster 并添加此功能)。

Keymaster 没有依赖项。我很想保持这种状态......谢谢!

4

1 回答 1

2

我不知道 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/

于 2013-08-13T21:21:12.250 回答