2010-11-18 6 views

risposta

7

Vale la pena ricordare che Firebug 1.12 ha introdotto getEventListeners(target). La pagina wiki Firebug per questo è here, e c'è un post di blog molto utile su di esso here.

(Firebug 1.12 è stato rilasciato solo nel mese di agosto del 2013, quindi la risposta a questa domanda aveva ragione quando è stato originariamente pubblicato.)

Tuttavia, ci sono un paio di avvertimenti per getEventListeners:

Prima di tutto , non funzionerà se si passa un oggetto jQuery; passare invece un normale oggetto DOM. (Forse questo è ovvio, ma mi ha sorpreso!)

In secondo luogo, ho trovato che getEventListeners non funziona sempre se lo eseguo prima che tutto il codice su una pagina sia stato caricato. Io non so esattamente quando lo fa e non funziona, ma ho certamente visto una situazione come questa:

>>> getEventListeners(document.getElementById('elementid')) 
ReferenceError: getEventListeners is not defined 
>>> $._data(document.getElementById('elementid'), "events"); 
Object { click=[1]} 

Come si può vedere, il metodo "longhand" (dal SO messaggio legato alla nella risposta) può recuperare l'evento, ma getEventListeners viene visualizzato come non definito. Questo errore è diverso dal valore di ritorno che si ottiene se getEventListeners viene eseguito ma segnala che un oggetto non ha ascoltatori, quindi direi che è possibile utilizzare getEventListeners senza paura, poiché sarà ovvio se non è ancora disponibile!

1

Non pensare che Firebug abbia una buona funzionalità per questo. Potresti voler cercare here.

12

Se si utilizza jQuery, quindi installare FireQuery, mostra tutti gli eventi associati sul pannello DOM HTML per elemento. Aggiunta molto utile.

+0

Inoltre mostra tutti i dati che si memorizzano e fornisce un pulsante "jqueryify" sulla console per l'iniezione della versione corrente di jQuery sulla pagina che si sta visualizzando, il che è molto utile. – Orbling

+1

Grazie per questo. FireQuery è uno strumento eccellente e vale la pena per qualsiasi sviluppatore web che utilizza jQuery con Firebug. – crmpicco

+1

Sembra che abbia smesso di funzionare a un certo punto ... Io uso la versione più recente di jQuery e non riuscivo a vedere nulla con quell'estensione. –