2012-05-17 8 views
29

¿Cómo puedo averiguar a qué función javascript llama el evento onclick de un objeto? Mejor aún, ¿puedo averiguar qué archivo .js está incluido en esa función?¿Cómo puedo averiguar a qué función javascript llama el evento onclick de un objeto?

+0

Para que quede claro, usted tiene un objeto DOM y desea saber lo que hace onclick? ¿Has probado 'someObject.onclick' o' someObject.getAttribute ("onclick") '? No se puede saber de qué archivo proviene, ya que el código JS no sabe nada de qué archivo proviene. – apsillers

+0

posible duplicado de [¿Cómo comprobar si hay detectores/controladores de eventos JavaScript adjuntos a un elemento/documento?] (Http://stackoverflow.com/questions/2382994/how-to-check-if-any-javascript-event- listeners-handlers-attached-to-an-element-d) –

+0

@Diodeus: esa pregunta es diferente: se trata de usar jQuery para obtener los eventos enlazados, mientras que OP busca un devtool de navegador en su lugar. –

Respuesta

2

Puede hacer como esto

Con Javascript Demo on JsFiddle

div1 = document.getElementById('div1'); 

alert(div1.getAttribute("onclick"));​ 

con jQuery Demo on JsFiddle

<div id="div1" onclick="myfun();" >​ 

alert($('#div1').attr('onclick'))​; 
+4

No veo una etiqueta jQuery en la pregunta en cualquier lugar. –

+1

Modifiqué mi respuesta Espero que esté bien ahora – Adil

+0

Esto requerirá que le pegue pimienta a su código con alertas(). Una manera terrible de depurar javascript. – Gjohn

0

que hacerlo usando este script Visual Event que pone de manifiesto claramente que los acontecimientos están suscritos por el que funciona en que elementos.

Para encontrar la fuente del código, simplemente use FireBug o herramientas de desarrollo de navegador similares para buscar el nombre de la función.

1

No podrá encontrar el archivo desde el que se llama al evento onclick, pero myObject.onclick le dará la función que está siendo llamada. Y no, no necesitas jQuery para esto.

En cuanto a obtener el nombre de la función, eso es un poco más complicado. Usted podría intentar algo como esto, tal vez:

var myFunc = myObject.onclick, myFuncName = ""; 

for(prop in window) { 
    if(window.hasOwnProperty(prop) && window[prop] === myFunc) { 
     myFuncName = prop; // myFuncName is now the name of the function. This only works if you didn't assign an anonymous function to the click handler. 
     break; 
    } 
} 

Pero, sinceramente, creo que es un poco excesivo.

1

Eso depende de cómo se conecte el event.

Si va a unirse a onclick sin algo como jQuery usted puede hacer esto:

var obj = document.getElementById('elementId'); 
console.log(obj.onclick); 
49

utilizo herramientas para desarrolladores de Chrome para esto:

Event Listener Breakpoints in Google Chrome's developer tools

Marque la casilla click, y luego haga clic en el elemento de la página para la que desea encontrar el controlador. Si está utilizando jQuery (o una biblioteca similar), es posible que tenga que pasar por su código antes de llegar al suyo.

+1

Nunca supe que esto existía en cromo.Esto es increíble y responde la pregunta por mí. – circlecube

+0

Gracias por informarnos sobre esta herramienta, pero en lo que este método es útil si va a señalarme líneas de código de la biblioteca jQuery. Cómo saber qué parte de mi código se está ejecutando. –

+1

@whitelettersandblankspaces La única forma que conozco actualmente es pasar por el código de jQuery hasta que llegue al suyo. – benekastah

Cuestiones relacionadas