Perbincangan ringkas mengenai pembatalan acara javascript dan mencegah menggelegak

PHPz
Lepaskan: 2018-10-12 14:58:00
asal
1394 orang telah melayarinya

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;   //用于处理使用对象属性注册的处理程序
}
Salin selepas log masuk

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;
};
Salin selepas log masuk

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.

Kodnya adalah seperti berikut:
function stopHandler(event)
    window.event?window.event.cancelBubble=true:event.stopPropagation();
}
Salin selepas log masuk

Di atas ialah keseluruhan kandungan artikel ini, saya harap anda boleh suka.

Untuk lebih banyak tutorial berkaitan, sila lawati Tutorial Video JavaScript

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!