Penyebaran Peristiwa: Bubbling vs Capturing
Penyebaran acara dalam HTML DOM merujuk kepada cara acara dikendalikan apabila ia berlaku dalam elemen bersarang. Dua mekanisme utama yang digunakan dalam penyebaran peristiwa ialah menggelegak peristiwa dan menangkap peristiwa. Memahami perbezaannya adalah penting untuk pengendalian acara yang berkesan dalam aplikasi web.
Event Bubbling:
Dalam acara menggelegak, peristiwa disebarkan dari elemen paling dalam ke elemen paling luar. Apabila peristiwa berlaku dalam elemen, ia mula-mula mencetuskan pengendali acara yang didaftarkan pada elemen itu sendiri. Jika tiada pengendali didaftarkan, peristiwa itu merambat (atau "gelembung") sehingga elemen induk dan proses berulang sehingga mencapai objek dokumen.
Tangkapan Acara:
Dalam penangkapan acara, proses penyebaran diterbalikkan. Peristiwa mula-mula ditangkap dan dikendalikan oleh elemen paling luar, dan kemudian disebarkan ke elemen paling dalam. Ini membolehkan pengendali acara yang didaftarkan pada elemen luar memintas acara sebelum mereka mencapai elemen dalam.
Bila Menggunakan Bubbling vs Capturing:
Pilihan antara menggelegak acara dan menangkap bergantung pada aplikasi tertentu keperluan.
Mengeleh:
Menangkap:
Contoh:
Pertimbangkan struktur HTML berikut:
<div>
Jika peristiwa klik berlaku pada elemen #item1, dengan acara menggelegak:
Dengan acara menangkap:
Prestasi Pertimbangan:
Peristiwa menggelegak mungkin sedikit merendahkan prestasi untuk struktur DOM yang kompleks, kerana peristiwa itu perlu disebarkan melalui berbilang elemen. Walau bagaimanapun, untuk kebanyakan aplikasi praktikal, penalti prestasi ini boleh diabaikan.
Sokongan Penyemak Imbas:
versi IE dan Internet Explorer sebelum 9 menyokong acara menggelegak sahaja. IE9 dan semua penyemak imbas moden menyokong kedua-dua menggelegak dan menangkap.
Sumber Tambahan:
Atas ialah kandungan terperinci Peristiwa Bubbling vs. Menangkap: Apakah Perbezaannya dan Bilakah Saya Perlu Menggunakan Setiap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!