Manejo de la key de JavaScript y compatibilidad del browser

Estoy trabajando en el event handling keys en el script java. Investigué un poco y me gustaría saber si entiendo correctamente el event handling keys.

KeyDown / KeyUp Event IE7 + y Firefox 3.5+ admiten los events Key Up Down y Key Up. No revisé las versiones anteriores de los browseres, pero supongo que también admiten estos events.

¿Es correcto decir que cada tecla en el keyboard siempre tendrá un código key?

CharCode

El valor de CharCode está disponible en la pulsación de tecla. La mayoría de las teclas tendrán los caracteres que representan el valor real. Algunas teclas no tendrán un código asociado asociado. Por ejemplo, retroceso, eliminación, teclas de flecha.

¿Tengo razón al decir que en la pulsación de tecla el código de operación será el mismo que el código key?

Orden de los events

  • KeyDown
  • KeyPress
  • Tecla Arriba

¿Este order varía de un browser a otro? Por ejemplo, tengo dos funciones. Primero está vinculado al evento KeyDown, el segundo está vinculado al evento KeyPress. Llamar a un evento KeyPress significa que también se llamará al evento KeyDown, cuando quiero que solo uno de estos events funcione.

Finalmente, he estado considerando utilizar diferentes rutinas de event handling keys dependiendo del browser de la versión. Por ejemplo:

  • Verificar la versión del browser
  • Obtener la rutina de event handling keys dependiendo de la versión del browser

Esto introducirá código adicional, pero debería simplificar el mantenimiento. Además, en el futuro, cuando quiera proporcionar un soporte para un browser diferente, simplemente puedo agregar otra rutina y no afectará la rutina de event handling caracteres existente.

Hasta ahora he estado leyendo http://www.quirksmode.org

Vea las siguientes páginas, responderán sus preguntas:

evento onkeydown , evento onkeypress , propiedad keyCode , propiedad charCode , qué propiedad

El siguiente artículo de Jan Wolter nunca me ha fallado y, por lejos, es el mejor recurso sobre events key de browser que he visto: http://unixpapa.com/js/key.html . Responde todas las preguntas que planteaste.

Una cosa para enfatizar es que con un uso cuidadoso de las properties key de events a su disposition, casi seguramente nunca tendrá que search un browser en particular en su código de event handling keys.

Actualización 2015:

De acuerdo con MDN event.charCode , event.keyCode y event.which han sido obsoletos. event.key es la forma más novedosa y novedosa de comprobar qué tecla se ha pulsado.

Parece fácil de usar, pero el soporte del browser no es perfecto. Todo lo que tenemos ahora es soporte parcial en Chrome 45+ (no fuera aún AFAIK), Firefox 23+ e IE 9+.