w3school react onkey event ejemplo javascript html5 canvas html5-canvas

react - onkey events javascript



addEventListener para keydown en Canvas (2)

Estoy tratando de hacer una aplicación de lienzo que responda a la entrada del teclado y el mouse. Tengo este código:

canvas = document.getElementById(''canvas''); canvas.addEventListener(''mousedown'', function(event) { alert(''mousedown''); }, false); canvas.addEventListener(''keydown'', function(event) { alert(''keydown''); }, false);

La alerta ''mousedown'' aparece cada vez que hago clic en el mouse, pero la alerta ''keydown'' nunca aparece. El mismo código funciona bien en JS Bin: http://jsbin.com/uteha3/66/

¿Por qué no funciona en mi página? ¿El lienzo no reconoce la entrada del teclado?


Establezca el tabindex del elemento canvas en 1 o algo así

<canvas tabindex=''1''></canvas>

Es un viejo truco para hacer que cualquier elemento sea enfocable


Editar - Esta respuesta es una solución, pero un enfoque mucho más simple y adecuado sería establecer el atributo tabindex en el elemento canvas (como lo sugiere hobberwickey).

No puedes enfocar un elemento de lienzo. Un trabajo simple alrededor de esto, sería hacer su "propio" enfoque.

var lastDownTarget, canvas; window.onload = function() { canvas = document.getElementById(''canvas''); document.addEventListener(''mousedown'', function(event) { lastDownTarget = event.target; alert(''mousedown''); }, false); document.addEventListener(''keydown'', function(event) { if(lastDownTarget == canvas) { alert(''keydown''); } }, false); }

JSFIDDLE