2012-05-17 3 views
29

Wie finde ich heraus, welche JavaScript-Funktion von einem Onclick-Ereignis eines Objekts aufgerufen wird? Noch besser, kann ich dann herausfinden, welche .js-Datei diese Funktion enthält?Wie finde ich heraus, welche JavaScript-Funktion vom onclick-Ereignis eines Objekts aufgerufen wird?

+0

Um klar zu sein, haben Sie ein DOM-Objekt und Sie möchten wissen, was es onclick? Haben Sie 'someObject.onclick' oder' someObject.getAttribute ("onclick") '? Sie können nicht wissen, aus welcher Datei es stammt, da JS-Code nichts darüber weiß, aus welcher Datei er stammt. – apsillers

+0

mögliches Duplikat von [Wie kann überprüft werden, ob JavaScript-Ereignis-Listener/Handler an ein Element/Dokument angehängt sind?] (Http://stackoverflow.com/questions/2382994/how-to-check-if-any-javascript-event- listeners-handlers-angefügt-an-ein-element-d) –

+0

@Diodeus: diese Frage ist anders - es geht darum, jQuery zu verwenden, um die gebundenen Ereignisse zu erhalten, während das OP stattdessen nach einem Browser-Devtool sucht. –

Antwort

2

Sie können tun, wie diese

Mit Javascript Demo on JsFiddle

div1 = document.getElementById('div1'); 

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

Mit jQuery Demo on JsFiddle

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

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

Ich sehe kein jQuery-Tag auf die Frage irgendwo. –

+1

Geändert meine Antwort Ich hoffe, es ist jetzt in Ordnung – Adil

+0

Dies erfordert, dass er seinen Code mit Warnungen() Pfeffer. Schreckliche Möglichkeit, Javascript zu debuggen. – Gjohn

0

Ich tue dies mit diesem Visual Event Skript, das fein säuberlich unterstreicht, welche Ereignisse durch welche Funktionen abonniert auf welchen Elementen.

Um die Quelle des Codes zu finden, verwenden Sie einfach FireBug oder ähnliche Browser-Entwickler-Tools, um den Funktionsnamen zu suchen.

1

Sie könnten die Datei, aus der das onclick-Ereignis aufgerufen wird, nicht finden, aber myObject.onclick gibt Ihnen die Funktion, die aufgerufen wird. Und nein, du brauchst jQuery dafür nicht.

Soweit die Name der Funktion, das ist ein wenig komplizierter. Sie könnten so etwas versuchen, vielleicht:

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; 
    } 
} 

Aber ehrlich gesagt, ich denke, das ist ein wenig Overkill.

1

Das hängt davon ab, wie die event angeschlossen ist.

Wenn Sie onclick ohne so etwas wie jQuery sind verbindlich Sie dies tun könnte:

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

Ich benutze Chrome Developer Tools hierfür:

Event Listener Breakpoints in Google Chrome's developer tools

Überprüfen Sie die click Feld und Klicken Sie dann auf das Element auf der Seite, für die Sie den Handler suchen möchten. Wenn Sie jQuery (oder eine ähnliche Bibliothek) verwenden, müssen Sie möglicherweise erst ihren Code durchlaufen, bevor Sie zu Ihrem gehören.

+1

Ich wusste nie, dass das in Chrom existiert.Das ist großartig und beantwortet die Frage für mich. – circlecube

+0

Vielen Dank, dass Sie uns über dieses Tool informiert haben, aber in welcher Weise diese Methode nützlich ist, wenn sie mich auf Codezeilen aus der jQuery-Bibliothek verweist. Wie kann ich wissen, welcher Teil des MY-Codes läuft? –

+1

@whitelettersandblankspaces Der einzige Weg, den ich derzeit kenne, besteht darin, den Code von jQuery zu durchlaufen, bis Sie zu Ihrem Code gelangen. – benekastah

Verwandte Themen