Rumah  >  Artikel  >  hujung hadapan web  >  Perbincangan ringkas mengenai pembatalan acara javascript dan mencegah menggelegak

Perbincangan ringkas mengenai pembatalan acara javascript dan mencegah menggelegak

PHPz
PHPzasal
2016-05-16 15:57:491394semak imbas

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.

Kodnya adalah seperti berikut:
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

Kenyataan:
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

Artikel berkaitan

Lihat lagi