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