Indicando a Firebug que se rompa tan pronto como se ejecute Javascript
debugging event-handling (5)
Heredé una pila de código que está haciendo cosas inesperadas cuando hago clic en algunos elementos <button>
.
La página tiene una gran cantidad de Javascript, y no está claro qué eventos, si los hay, se han configurado en el botón o sus elementos principales. Estoy tratando de encontrar dónde comienza la ejecución para poder depurar lo que está sucediendo.
¿Hay alguna manera de romper Firebug (o cualquier depurador de Javascript) cada vez que se ejecute un código de JavaScript? ¿Tal vez de alguna manera establecer un punto de interrupción en cada línea programáticamente? ¿O hay alguna otra forma de averiguar a qué evento está respondiendo el botón (usuarios de la página boh Prototype, jQuery y algunos Javascript personalizados, lo sé).
Encontré un bookmarklet que enumerará todos los eventos enlazados en su página .
Este tipo será útil si no sabe qué eventos están vinculados por un código de terceros.
Si desea ver qué eventos están configurados en la página, también puede probar Eventbug .
Si se trata de un problema de depuración genérico, puede usar Web Inspector en Safari / Chrome. Una ventaja adicional es que puede lanzar la siguiente declaración en su código JavaScript para desplegar el depurador:
...
debugger; // Will trigger the debugger
...
De lo contrario, puede establecer puntos de interrupción, puntos de interrupción condicionales, pausa en la siguiente ejecución y todos los trucos habituales. Algunos buenos videos están disponibles aquí .
En respuesta a la sugerencia de alert
anterior. Recomendaría seriamente usar console.log
o console.dir
si tiene acceso a un depurador. Obtendrá más información sin bloquear la ejecución de su script. Además, no olvide que console.log
puede tomar múltiples parámetros para que pueda imprimir muy bien los datos, no tiene que limitarse a una sola cadena como alert
.
Simplemente presione el botón Pausa en el panel de Firebug (en la esquina superior izquierda del mismo, dos líneas verticales amarillas, cuando se selecciona la pestaña Script) - y se detendrá en la primera cadena JS.
Pero detendrá la ejecución de JS realmente en CUALQUIER evento, por lo que si tiene un botón que atrapa el mouse y hace clic en el mouse, no podré detenerlo con el mouse, ya que el script se detendrá al mover el mouse cada vez que intente moverse Pase el mouse sobre este botón. Le sugiero que simplemente inserte alertas () en los lugares sospechosos, después de algunas iteraciones encontrará exactamente la cadena que necesita (donde se produce el error).
Cierre el navegador de Internet y ábralo de nuevo. "Break on next" comenzará a funcionar nuevamente. De lo contrario Firebug simplemente ignora esta opción después de un tiempo, y no se rompe sino que ejecuta javascripts para todos los eventos sin advertirte.