Rumah > Artikel > hujung hadapan web > Perbincangan ringkas mengenai pembatalan acara javascript dan mencegah menggelegak
Batalkan operasi lalai
Kaedah w3c ialah e.preventDefault(), IE menggunakan e.returnValue = false;
Dalam menyokong addEventListener() In penyemak imbas, anda juga boleh membatalkan operasi lalai masa dengan memanggil kaedah preventDefault() objek masa. Walau bagaimanapun, dalam IE sebelum IE9, kesan yang sama boleh dicapai dengan menetapkan sifat returnValue objek acara kepada palsu. Kod berikut menganggap pengendali acara yang menggunakan ketiga-tiga teknik pembatalan:
function cancelHandler(event){ var event = event || window.event; //用于IE if(event.preventDefault) event.preventDefault(); //标准技术 if(event.returnValue) event.returnValue = false; //IE return false; //用于处理使用对象属性注册的处理程序 }
Model peristiwa DOM draf semasa mentakrifkan lalai sifat objek AcaraPrevented.
return false
Javascript's return false hanya akan menghalang gelagat lalai, tetapi menggunakan jQuery akan menghalang gelagat lalai dan menghalang objek daripada menggelegak.
Kod adalah seperti berikut:
var a = document.getElementById("testB"); a.onclick = function(){ return false; };
Untuk mengelakkan menggelegak
kaedah w3c ialah e. stopPropagation( ), IE menggunakan e.cancelBubble = true
Dalam penyemak imbas yang menyokong addEventListener(), anda boleh memanggil kaedah stopPropagation() objek acara untuk menghalang acara daripada terus disebarkan. Jika pengendali lain ditakrifkan pada objek yang sama, pengendali yang tinggal masih akan dipanggil, tetapi memanggil kaedah stopPropagation() boleh dipanggil pada bila-bila masa semasa penyebaran acara Ia boleh berfungsi dalam fasa tangkapan, sasaran acara itu sendiri dan peringkat gelembung risiko.
IE sebelum IE9 tidak menyokong kaedah stopPropagation(). Sebaliknya, objek acara IE mempunyai sifat cancleBubble Menetapkan sifat ini kepada benar menghalang acara daripada disebarkan lebih jauh. (IE8 dan versi terdahulu tidak menyokong fasa tangkapan penyebaran peristiwa, jadi menggelegak adalah satu-satunya penyebaran peristiwa yang akan dibatalkan.)
Draf spesifikasi acara DOM semasa mentakrifkan kaedah lain pada objek Acara, bernama stopImmediatePropagation ( ). Seperti stopPropagation(), kaedah ini menghalang penyebaran acara daripada sebarang objek lain, tetapi juga menghalang mana-mana pengendali acara lain yang didaftarkan pada objek yang sama daripada dipanggil.
function stopHandler(event) window.event?window.event.cancelBubble=true:event.stopPropagation(); }
Di atas ialah keseluruhan kandungan artikel ini, saya harap anda boleh suka.
Untuk lebih banyak tutorial berkaitan, sila lawati Tutorial Video JavaScript