Событие Keydown EventListener не запускается с несколькими клавишами вниз

При использовании 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);
})

Спасибо :)

javascript,addeventlistener,

0

Ответов: 0

Событие Keydown EventListener не запускается с несколькими клавишами вниз

При использовании 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);
})

Спасибо :)

00JavaScript, addeventlistener,
Похожие вопросы