Come posso visualizzare gli eventi generati su un elemento in Chrome DevTools?


603

Ho un elemento del modulo personalizzabile su una pagina di una libreria. Voglio vedere quali eventi javascript vengono generati quando interagisco con esso perché sto cercando di scoprire quale gestore di eventi utilizzare.

Come posso farlo utilizzando Chrome Web Developer?


13
Questo bookmarklet può essere utile: sprymedia.co.uk/article/Visual+Event+2
scytale

1
La risposta qui è preziosa, ma il bookmarklet sopra ^ è in realtà ciò che ha risolto il mio problema. sprymedia.co.uk/article/Visual+Event+2
Jazzy

Risposte:


879
  • Premi F12per aprire Dev Tools
  • Fai clic sulla scheda Fonti
  • Sul lato destro, scorrere verso il basso fino a "Punti di interruzione del listener di eventi" ed espandere l'albero
  • Fai clic sugli eventi che desideri ascoltare.
  • Interagisci con l'elemento bersaglio, se sparano otterrai un punto di interruzione nel debugger

Allo stesso modo, è possibile fare clic con il tasto destro del mouse sull'elemento target -> selezionare "Ispeziona elemento" Scorrere verso il basso sul lato destro del frame di sviluppo, in fondo è "listener di eventi". Espandi l'albero per vedere quali eventi sono associati all'elemento. Non sono sicuro che funzioni per eventi gestiti attraverso il gorgoglio (suppongo di no)


11
questa soluzione è un problema se si tratta di eventi del mouse che si stanno
cercando

67
cosa succede se tutti gli eventi indicano jquery minimizzato di cui non mi interessa, come posso raggiungere la funzione che utilizza quel jquery?
Muhammad Umer,

14
Può mostrare eventi personalizzati che sono stati creati da me? Quando ho letto che ha cambiato la vita è stata la prima cosa a cui ho pensato. Mi manca qualcosa?
Tebe,

24
@MuhammadUmer Puoi blackbox jQuery in modo che Chrome lo salti e vada direttamente al tuo codice sorgente. developer.chrome.com/devtools/docs/blackboxing
Matt Zeunert,

1
@MuhammadUmer e se smettessi di usare JQuery?
John Balvin Arias,

831

È possibile utilizzare la funzione monitorEvents .

Ispeziona il tuo elemento ( right mouse clickInspectsull'elemento visibile o vai alla Elementsscheda in Strumenti per gli sviluppatori di Chrome e seleziona l'elemento desiderato) quindi vai alla Consolescheda e scrivi:

monitorEvents($0)

Ora quando si sposta il mouse su questo elemento, si attiva o si fa clic su di esso, il nome dell'evento generato verrà visualizzato con i suoi dati.

Per interrompere la ricezione di questi dati basta scrivere questo sulla console:

unmonitorEvents($0)

$0è solo l'ultimo elemento DOM selezionato da Chrome Developer Tools. È possibile passare qualsiasi altro oggetto DOM lì (ad esempio risultato di getElementByIdo querySelector).

È inoltre possibile specificare il "tipo" di evento come secondo parametro per restringere gli eventi monitorati a un set predefinito. Per esempio:

monitorEvents(document.body, 'mouse')

L'elenco di questi tipi disponibili è qui .

Ho realizzato una piccola gif che illustra come funziona questa funzione:

utilizzo della funzione monitorEvents


2
Concordato. Questo è il modo defacto per monitorare e rintracciare eventi su elementi specifici .
dmackerman,

1
Ah sì, vedo. Era il "indefinito" che mi stava buttando via ma ora vedo che hai lo stesso nella tua utile GIF animata. Grazie.
MSC,

1
quale strumento hai usato per creare GIF
JerryGoyal,

3
@MariuszPawelski Come procedere da qui? L'ho fatto e ho trovato l'evento click, che era l'evento a cui ero interessato. Ma come faccio a trovare cosa succede quando faccio clic sull'elemento? Che tipo di codice viene eseguito? Di quale proprietà MouseEventdovrei cercare?
Utku,

3
ma dove trovare il gestore, ad esempio il gestore di clic.
Sheikh Abdul Wahid,

26

Visual Event è un piccolo bookmarklet che puoi utilizzare per visualizzare i gestori di eventi di un elemento. Sulla demo online può essere visualizzato qui .


22

Per jQuery (almeno la versione 1.11.2) la seguente procedura ha funzionato per me.

  1. Fare clic destro sull'elemento e aprire "Strumenti per sviluppatori Chrome"
  2. Digita $._data(($0), 'events');"Console"
  3. Espandi gli oggetti collegati e fai doppio clic sul handler:valore.
  4. Questo mostra il codice sorgente della funzione allegata, cercane una parte usando la scheda 'Cerca'.

Ed è ora di smettere di reinventare la ruota e iniziare a utilizzare gli eventi JS vaniglia ... :)

how-to-find-jquery-click-gestore-function


15

Questo non mostrerà eventi personalizzati come quelli che il tuo script potrebbe creare se si tratta di un plugin jquery. per esempio :

jQuery(function($){
 var ThingName="Something";

 $("body a").live('click', function(Event){
   var $this = $(Event.target);
       $this.trigger(ThingName + ":custom-event-one");
 });

 $.on(ThingName + ":custom-event-one", function(Event){
   console.log(ThingName, "Fired Custom Event: 1", Event);
 })

});

Il pannello degli eventi in Script negli strumenti di sviluppo di Chrome non mostrerà "Qualcosa: evento-personalizzato-uno"


21
Come si trovano quegli eventi?
Calydon,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.