Estoy construyendo un juego que lanza bombas cuando presiono la barra espaciadora y el problema es que cuando presiono esta tecla el juego termina, porque interpreta que presionar la barra espaciadora hace clic en el botón Iniciar juego que cambia a Finalizar juego una vez que comienza el juego. .
¿Cómo puedo solucionar este problema? Aquí hay un ejemplo de lo que quiero decir:
var spacebar = false, btn = document.getElementById('btn'); btn.addEventListener('click', () => { console.log('test') }) // ---- Spacebar functionality ---- function handleKeyDown(e){ e.keyCode === 32 ? spacebar = true : null } function handleKeyUp(e){ e.keyCode === 32 ? spacebar = false : null } document.addEventListener("keydown", handleKeyDown, false) document.addEventListener("keyup", handleKeyUp, false) 1) Click the button <br> 2) Now without clicking press the spacebar <br><br> <button id="btn">Click me to console log</button>Prueba con document.activeElement.blur(); y perdí el foco en el botón.
var spacebar = false, btn = document.getElementById('btn'); btn.addEventListener('click', () => { console.log('test'); document.activeElement.blur(); //<----- Here my edit }) // ---- Spacebar functionality ---- function handleKeyDown(e){ e.keyCode === 32 ? spacebar = true : null } function handleKeyUp(e){ e.keyCode === 32 ? spacebar = false : null } document.addEventListener("keydown", handleKeyDown, false) document.addEventListener("keyup", handleKeyUp, false) 1) Click the button <br> 2) Now without clicking press the spacebar <br><br> <button id="btn">Click me to console log</button>Puede hacerlo eliminando la respuesta del botón al evento 'keyup'
<button id="btn" onkeyup="event.preventDefault()">Click me to console log</button>