2011-12-19 12 views
5

Estoy tratando de hacer una consola como aplicación, así que estoy atrapando toda la presión de tecla en la ventana y hago cosas relacionadas con ellos (no es importante). El problema está en el retroceso. Tengo el siguiente código:Coger retroceso en Chrome y Firefox es diferente

$(window).bind("keypress",function(e){ 
     var code = e.keyCode || e.which; 
     if (code == 8) { 
      a = $("#console").html(); 
      $("#console").html(a.substring(0,a.length-1)); 
      currentCommand = currentCommand.substring(0,currentCommand.length-1);   
      e.preventDefault(); 
     } 

Sin embargo, en Firefox, el contenido de #console se borran, pero Chrome no ejecuta el código de seguridad. Necesito una solución compatible con varios navegadores. ¿Qué me estoy perdiendo?

ADEMÁS:

Si uso keydown/keyup en lugar de pulsación de tecla, no soy capaz de detectar si el characeter fue 'A' o 'a' siempre devuelve 'A'.

+0

duplicado posible de [Javascript e.keyCode no coge Retroceso/Del en el IE] (http://stackoverflow.com/questions/4084715/javascript-e-keycode-doesnt-catch-backspace -del-in-ie) – Keelan

+0

Sí, no es un duplicado exacto, pero la pregunta se responde allí. – Keelan

Respuesta

4

Lea esto. IE no activa la pulsación de tecla para esas teclas especiales. Tal vez sea lo mismo con algunos de los otros navegadores.

Javascript e.keyCode doesn't catch Backspace/Del in IE

+0

si hago: \t '$ (window) .bind ("keydown", función (e) { \t \t código var = || e.keyCode e.which; \t \t console.log (código);' Siempre me da caracteres de mayúsculas, como es alwayws 65 si presiono A o – Mustafa

+0

¿Quizás puede intentar ver si se presionó el botón SHIFT? Como se explica en este hilo: http://stackoverflow.com/questions/3125727/how-to-difereniate-capital-letters-from-lower-ones-in-onkeydown-event-handler-m – Tys

+0

No, estoy seguro de que no se presionó SHIFT – Mustafa

Cuestiones relacionadas