2012-09-13 7 views
11

Tengo este error divertido que ocurre y no sé cómo depurarlo. Cada vez que se carga una página en mi sitio, se dispara un evento de desplazamiento. La página no se mueve de forma visible, y ciertamente no estoy activando el desplazamiento mediante el mouse o el teclado. Sé que evento de desplazamiento está disparando porque puse una línea de código que leeJavascript cómo encontrar la fuente un evento de desplazamiento

$(window).bind('scroll', function (e) {console.log(e)}); 

Efectivamente en cada página me sale un pequeño mensaje de "jQuery.Event" en el diario de mi consola. Cuando rompo mi punto, mi pila de llamadas termina en jQuery.even.dispatch.apply (eventHandle.elem, arguments), lo que no me da mucho trabajo.

Aquí está la pregunta. ¿Cómo averiguo qué está desencadenando este evento de desplazamiento? ¿Hay un atributo en el objeto de evento jquery que me dirá si el desplazamiento fue iniciado por el usuario o desencadenado por un script? En esta situación, ¿qué harías para resolver esto?

+0

Usted podría tratar de establecer puntos de interrupción en su navegador y tratar de reducir la fuente manualmente. – adamdport

+0

lea la línea, "Cuando rompo el punto, mi pila de llamadas termina en jQuery.even.dispatch.apply (eventHandle.elem, arguments), lo que no me da mucho trabajo". – aamiri

+0

¿Podría ser un problema de desbordamiento de pila? He visto el manejo de eventos en jQuery hacer esto antes ... ¿cuánto tiempo dura la pila de llamadas? –

Respuesta

2

De acuerdo, parece que jQuery oculta todos los datos de enlace de eventos dentro de un atributo oculto. This post describe formas que le permiten descubrir al menos lo que se está ejecutando; es su responsabilidad averiguar dónde están los manejadores en cada archivo.

En el caso en el que están implicados scroll eventos:

var scrollHandlers = jQuery._data(window, 'events')['scroll']; 
for (var i = 0; i < scrollHandlers.length; i++) { 
    console.error(scrollHandlers[i].handler); // or console.debug, whatever proves they exist 
} 
+0

Realmente no responde la pregunta porque su desplazamiento probablemente se desencadena en una carga o algo así y solo encuentra manejadores de desplazamiento. Pero +1 de todos modos porque 'jQuery._data (window, 'events')' fue una gran cosa para aprender. – dlsso

Cuestiones relacionadas