EventListener keydown事件无法在多个键按下时触发

时间:2018-08-24 13:39:16

标签: javascript addeventlistener

在使用window.addEventListener事件和'keydown'事件时,如果已经按下多个键,它将按预期停止工作。

这可以通过以下代码看到:

window.addEventListener('keydown', event => {
    console.log(event.keyCode);
})

这将适用于2-5个按键,此时将不记录其他事件。有办法解决这个问题吗?

我正在尝试实现一个系统,该系统跟踪每个键被按下了多长时间(下面的代码)。如果您能想到一种可以在该系统上使用的变通办法,将不胜感激。

let keyController = { //object containing information about keys;
    keyTimes: [], //time pressed, indexed by keyCode. undefined when not pressed
    keyPress(keyCode){ 
        if (!this.keyTimes[keyCode]){ //to ignore autorepeat
            this.keyTimes[keyCode] = Date.now();
        }
    },
    keyRelease(keyCode){
        delete this.keyTimes[keyCode];
    },
    getTimePressed(keyCode){
        return this.keyTimes[keyCode] ? Date.now() - this.keyTimes[keyCode] : 0;
    }
};

window.addEventListener('keydown', event => {
    keyController.keyPress(event.keyCode);
})

window.addEventListener('keyup', event => {
    keyController.keyRelease(event.keyCode);
})

谢谢:)

0 个答案:

没有答案