JavaScript HTML DOM 事件监听程序

Method addEventListener()

实例

Tambah pengesanan pemantau peristiwa yang diaktifkan ketika pengguna mengklik tombol:

document.getElementById("myBtn").addEventListener("click", displayDate);

亲自试一试

addEventListener() Method untuk menetapkan penanggungjawab peristiwa untuk elemen yang ditentukan.

addEventListener() Method untuk menambah penanggungjawab peristiwa kepada elemen tanpa menimpa penanggungjawab peristiwa yang sedia ada.

Anda boleh menambah beberapa penanggungjawab peristiwa kepada sebuah elemen.

Anda dapat menambah beberapa pemroses peristiwa yang sama jenisnya ke elemen, seperti dua peristiwa "click".

Anda dapat menambah pemroses peristiwa ke setiap objek DOM, bukan hanya elemen HTML, seperti objek window.

addEventListener() Metode ini membuatnya lebih mudah untuk mengawasi bagaimana peristiwa merespon bubbling.

Ketika menggunakan addEventListener() Metode memisahkan JavaScript dengan HTML markering untuk keutamaan penutupan; bahkan saat tidak mengawasi markering HTML, Anda masih dapat menambah pemantau peristiwa.

Anda dapat melakukannya dengan menggunakan removeEventListener() Metode ini mudah untuk menghapus pemantau peristiwa.

Sintaks

element.addEventListener(event, function, useCapture);

Parameter pertama adalah jenis peristiwa (seperti "click" atau "mousedown").

Parameter kedua adalah fungsi yang perlu dipanggil saat peristiwa terjadi.

Parameter ketiga adalah nilai boolean yang menentukan penggunaan bubbling peristiwa atau capture peristiwa. Parameter ini adalah pilihan.

Perhatian:Jangan gunakan awalan "on" untuk peristiwa; gunakan "click" daripada "onclick".

Tambahkan pemroses peristiwa ke elemen

实例

Tampilkan "Hello World!" saat pengguna mengklik elemen:

element.addEventListener("click", function(){ alert("Hello World!"); });

亲自试一试

Anda juga dapat mengambil referensi fungsi "panggilan" eksternal:

实例

Tampilkan "Hello World!" saat pengguna mengklik elemen:

element.addEventListener("click", myFunction);
function myFunction() {
    alert ("Hello World!");
}

亲自试一试

Tambahkan beberapa pemroses peristiwa ke elemen yang sama

addEventListener() Metode ini memungkinkan Anda menambah beberapa peristiwa ke elemen yang sama tanpa menimpa peristiwa yang sudah ada:

实例

element.addEventListener("click", myFunction);
element.addEventListener("click", mySecondFunction);

亲自试一试

Anda dapat menambahkan berbagai jenis peristiwa ke elemen yang sama:

实例

element.addEventListener("mouseover", myFunction);
element.addEventListener("click", mySecondFunction);
element.addEventListener("mouseout", myThirdFunction);

亲自试一试

Tambahkan pemroses peristiwa ke objek Window

addEventListener() Memungkinkan Anda menambah pemantau peristiwa ke setiap objek DOM HTML, seperti elemen HTML, objek HTML, objek window, atau objek yang mendukung peristiwa lain, seperti objek XMLHttpRequest.

实例

Tambahkan pemantau peristiwa yang dijalankan saat pengguna mengubah ukuran jendela:

window.addEventListener("resize", function(){
    document.getElementById("demo").innerHTML = sometext;
});

亲自试一试

传递参数

当传递参数值时,请以参数形式使用调用指定函数的“匿名函数”:

实例

element.addEventListener("click", function(){ myFunction(p1, p2); });

亲自试一试

事件冒泡还是事件捕获?

在 HTML DOM 中有两种事件传播的方法:冒泡和捕获。

事件传播是一种定义当发生事件时元素次序的方法。假如 <div> 元素内有一个 <p>,然后用户点击了这个 <p> 元素,应该首先处理哪个元素“click”事件?

在冒泡中,最内侧元素的事件会首先被处理,然后是更外侧的:首先处理 <p> 元素的点击事件,然后是 <div> 元素的点击事件。

在捕获中,最外侧元素的事件会首先被处理,然后是更内侧的:首先处理 <div> 元素的点击事件,然后是 <p> 元素的点击事件。

在 addEventListener() 方法中,你能够通过使用“useCapture”参数来规定传播类型:

addEventListener(event, function, useCapture);

默认值是 false,将使用冒泡传播,如果该值设置为 true,则事件使用捕获传播。

实例

document.getElementById("myP").addEventListener("click", myFunction, true);
document.getElementById("myDiv").addEventListener("click", myFunction, true);

亲自试一试

removeEventListener() 方法

removeEventListener() 方法会删除已通过 addEventListener() 方法附加的事件处理程序:

实例

element.removeEventListener("mousemove", myFunction);

亲自试一试

浏览器支持

表格中的数字规定了完全支持这些方法的首个浏览器版本。

方法
addEventListener() 1.0 9.0 1.0 1.0 7.0
removeEventListener() 1.0 9.0 1.0 1.0 7.0

注释:IE 8、Opera 6.0 及其更早版本不支持 addEventListener()removeEventListener() 方法。不过,对于这些特殊的浏览器版本,您可以使用 attachEvent() 方法向元素添加事件处理程序,并由 detachEvent() 方法删除:

element.attachEvent(event, function);
element.detachEvent(event, function);

实例

跨浏览器解决方案:

var x = document.getElementById("myBtn");
if (x.addEventListener) {                    // 针对主流浏览器,除了 IE 8 及更正版本
    x.addEventListener("click", myFunction);
} else if (x.attachEvent) {                  // 针对 IE 8 及更早版本
    x.attachEvent("onclick", myFunction);
} 

亲自试一试

HTML DOM Event 对象参考手册

如需所有 HTML DOM 事件的列表,请访问我们完整的 HTML DOM Event 对象参考手册