Apakah ada cara untuk melihat fungsi / kode apa yang dilampirkan ke acara apa pun untuk elemen DOM? Menggunakan Firebug atau alat lainnya.
javascript
events
Claudio Redi
sumber
sumber
Jawaban:
Penangan peristiwa yang dilampirkan menggunakan tradisional
element.onclick= handler
atau HTML<element onclick="handler">
dapat diambil dengan mudah darielement.onclick
properti dari skrip atau dalam-debugger.Penangan peristiwa yang dilampirkan menggunakan
addEventListener
metode Peristiwa Tingkat 2 DOM dan IEattachEvent
saat ini tidak dapat diambil dari skrip sama sekali. DOM Level 3 pernah diusulkanelement.eventListenerList
untuk mendapatkan semua pendengar, tetapi tidak jelas apakah ini akan mencapai spesifikasi akhir. Tidak ada implementasi di browser mana pun saat ini.Alat debugging sebagai ekstensi browser bisa mendapatkan akses ke jenis pendengar ini, tetapi saya tidak mengetahui apa pun yang sebenarnya melakukannya.
Beberapa kerangka kerja JS menyisakan cukup banyak rekaman peristiwa yang mengikat untuk mengetahui apa yang telah mereka lakukan. Peristiwa Visual mengambil pendekatan ini untuk menemukan pendengar yang terdaftar melalui beberapa kerangka kerja populer.
sumber
The Elements Panel di alat Pengembang Google Chrome telah memiliki ini sejak rilis Chrome pada pertengahan 2011 dan Chrome pengembang saluran rilis sejak tahun 2010.
Selain itu, event listener yang ditampilkan untuk node yang dipilih berada dalam urutan saat mereka diaktifkan melalui fase capture dan bubble.
Tekan command+ option+ idi Mac OSX dan Ctrl+ Shift+ idi Windows untuk menjalankannya di Chrome
sumber
window
objek, sepertimessage
acara tersebut?Alat Pengembang Chrome baru-baru ini mengumumkan beberapa alat baru untuk Memantau Peristiwa JavaScript .
Menemukan Peristiwa Kustom
Untuk kebutuhan saya, menemukan peristiwa JS kustom dalam kode pihak ketiga, dua versi berikut
getEventListeners()
ini sangat membantu;getEventListeners(window)
getEventListeners(document)
Jika Anda tahu apa Node DOM yang dilampirkan event listener, Anda akan meneruskannya, bukan
window
ataudocument
.Acara yang Diketahui
Jika Anda tahu apa acara yang Anda ingin memantau misalnya
click
pada tubuh dokumen Anda bisa menggunakan berikut:monitorEvents(document.body, 'click');
.Anda sekarang harus mulai melihat semua peristiwa klik saat
document.body
login di konsol.sumber
Anda bisa melihat kejadian yang dilampirkan secara langsung (element.onclick = handler) dengan melihat DOM. Anda dapat melihat acara yang terpasang dengan jQuery di Firefox menggunakan FireBug dengan FireQuery. Tampaknya tidak ada cara untuk melihat peristiwa yang ditambahkan addEventListener menggunakan FireBug. Namun, Anda dapat melihatnya di Chrome menggunakan debugger Chrome.
sumber
Anda dapat menggunakan Visual Event oleh Allan Jardine untuk memeriksa semua penangan kejadian yang saat ini dilampirkan dari beberapa perpustakaan JavaScript utama di halaman Anda. Ia bekerja dengan jQuery, YUI dan beberapa lainnya.
Visual Event adalah bookmarklet JavaScript sehingga kompatibel dengan semua browser utama.
sumber
Anda dapat memperluas lingkungan javascript untuk melacak event listener. Gabungkan (atau 'overload') metode addEventListener () native dengan beberapa kode yang dapat menyimpan catatan event listener yang ditambahkan sejak saat itu . Anda juga harus memperluas HTMLElement.prototype.removeEventListener untuk menyimpan catatan yang secara akurat mencerminkan apa yang terjadi di DOM.
Hanya untuk ilustrasi (kode yang belum teruji) - ini adalah contoh bagaimana Anda akan 'membungkus' addEventListener untuk memiliki catatan event listener terdaftar pada objek itu sendiri:
sumber