2011-08-16 11 views
7

Imagina una aplicación web que utiliza controladores de eventos de teclado personalizados que pueden provocar un evento de borboteo o captura de eventos.
¿Hay alguna manera (por ejemplo, complemento de Firefox/Firebug) a depuración cada evento golpe de teclado/teclado, algo así como:javascript: Cómo depurar eventos de teclado

  • mostrando el tipo de evento y todos los atributos
  • huella que javascript método había sido llamado
  • en caso de burbujeo acontecimiento que otros métodos han sido llamados

Para aclarar mi pregunta: no sé cual existen controladores de método y en el que se definen - esto es lo que trato de descubrir.

Respuesta

0

No conozco ninguna extensión para este propósito. Sin embargo, puede escribir controladores para eventos clave y luego imprimir el resultado apropiado a la consola de JavaScript. También puedes volcar rastros también. Firebug tiene funcionalidad de rastreo integrada: console.trace(). Puede buscar en Google con js trace palabras clave para encontrar algunas herramientas de rastreo también.

This page es un buen ejemplo para manejar eventos de teclado.

+2

Para esto hay que saber donde se definen los controladores de eventos clave. Pero esta es exactamente la razón de mi pregunta, no sé qué métodos de controlador de eventos se invocan. Imagina un sistema de software muy grande y antiguo: las cosas podrían ser difíciles de encontrar todas. – MRalwasser

1

En IE se puede utilizar la palabra clave debugger;. No está seguro sobre la amabilidad x-navegador:

function sayHello() { 
    debugger; // will break here and launch script debugging in IE 
    alert('hello world'); 
} 

En el contexto de su reto:

function someKeyPress(e) { 
    debugger; 
    // inspect e.keyCode ... etc 
} 

me parece que esta es la técnica de depuración más eficaz, pero por otra parte me paso mucho tiempo en IE. Muchas personas son cómodas con Firebug, pero me parece engorroso y mucho menos intuitivo que el depurador de IE. El depurador de IE proporciona una evaluación más fácil de los relojes y las expresiones, y también proporciona información sobre herramientas interactiva basada en la reflexión (como el depurador VS).

Además, según su pregunta "trace qué método se llamó", la pila de llamadas es muy sensible y fácil de seguir.

ACTUALIZACIÓN:

Aquí es un script para colocar en la parte inferior de cada página para atrapar y depurar los eventos, en el IE:

<script type="text/javascript"> 
    function wrapIfHandled(el, evt) { 
     if (el && evt && el['on' + evt]) { 
      el['_on' + evt] = el['on' + evt]; 
      el['on' + evt] = function (e) { 
       foo(e, el['_on' + evt]); 
      }; 
     } 
    } 

    function wrapAll() { 
     var allEl = document.getElementsByTagName("*"); 
     for (var i = 0; i < allEl.length; i++) { 
      wrapIfHandled(allEl[i], 'click'); 
      // wrapIfHandled(allEl[i], other event names <keyup, keydown, etc> 
     } 
    } 

    function foo(e, d) { 
     debugger; 
     d(e); 
    } 

    wrapAll(); 
</script> 
+1

Para esto debo saber qué métodos se usan como manejadores de eventos, pero esto es lo que trato de averiguar. – MRalwasser

+0

¿Puede proporcionar un poco más de detalle sobre su problema? ¿No tiene acceso al código javascript, la página html/java/php/aspx? ¿O ambos? ¿Tiene acceso a algún código fuente? – Brian

+2

Sí, tengo acceso al código fuente. Imagine una aplicación web antigua que define los manejadores de eventos por página individualmente y no en un lugar general.Tengo el problema de que en algunos navegadores en algunas páginas, algunas teclas no funcionan correctamente (pero no hay errores de javascript). Necesito una herramienta para rastrear todos los eventos de teclado para poder ver rápidamente dónde se maneja el evento. – MRalwasser

Cuestiones relacionadas