在使用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);
})
谢谢:)