Чтобы избежать повторения события keydown
, заблокируйте его после выстрела и разблокируйте его с помощью keyup
.Вам следует избегать глобальной переменной 'fired', поэтому используйте кодовый блок с ES6 + или закрытие в более старой версии JS.
Для ES6:
{ let fired = false; // code block to exclude 'fired' from global scope
element.addEventListener('keydown', (e) => {
// only accept key down when was released
if(!fired) {
fired = true;
// check what key pressed...
if (e.keyCode === 32) {
// and do what you need with it
}
}
});
element.addEventListener('keyup', (e) => {
fired = false;
});
}
Для более старой версии JS используйте IIFE:
(function(){
let fired = false;
element.addEventListener('keydown', function(e) {
// only accept key down when was released
if(!fired) {
fired = true;
// check what key pressed...
if (e.keyCode === 32) {
// and do what you need with it
}
}
});
element.addEventListener('keyup', function(e) {
fired = false;
});
})();