JavaScript HTML DOM 事件监听程序

addEventListener() method

实例

Magdagdag ng event listener na mag-activate kapag may click ang user sa button:

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

亲自试一试

addEventListener() Ang paraan ay magdagdag ng event handler sa tinukoy na elemento.

addEventListener() Ang paraan ay magdagdag ng event handler sa elemento na hindi pagbabago ang naunang event handler.

Maaari kang magdagdag ng maraming event handler sa isang elemento.

Maaari mong magdagdag ng maraming parehong uri ng tagapagpasok ng pangyayari sa isang element, tulad ng dalawang "click" na pangyayari.

Maaari mong magdagdag ng tagapagpasok ng pangyayari sa anumang DOM object, hindi lamang sa HTML element, tulad ng window object.

addEventListener() method na nagpapadali sa kontrol ng pagtugon ng event bubbling.

Kapag gumamit ng addEventListener() method na naghihiwalay ang JavaScript at HTML tag upang maging mas mabasa; kahit walang kontrol sa HTML tag, pinapayagan mong magdagdag ng tagapagpasok ng pangyayari.

Maaari mong gumamit ng removeEventListener() Ang method na ito ay madaling tanggalin ang tagapagpasok ng pangyayari.

Grammar

element.addEventListener(event, function, useCapture);

Ang unang argumento ay ang uri ng pangyayari (tulad ng "click" o "mousedown").

Ang ikalawang argumento ay ang function na kailangan nating tulungan na pagpapatunay kapag nangyayari ang pangyayari.

Ang ikatlong argumento ay boolean value, na nagtutukoy kung magagamit ang event bubbling o event capturing. Ang argumento na ito ay opsyonal.

Babala:Huwag gumamit ng prefikso "on" sa pangyayari; gamitin ang "click" sa halip ng "onclick".

Magdagdag ng tagapagpasok ng pangyayari sa element

实例

Kapag tinapik ng user ang anumang element, magpakita ng "Hello World!":

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

亲自试一试

Maaari mo ring magsalita ng panlabas na "pinangalanan" na function:

实例

Kapag tinapik ng user ang anumang element, magpakita ng "Hello World!":

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

亲自试一试

Magdagdag ng maraming tagapagpasok ng pangyayari sa parehong element

addEventListener() Ang paraan na ito ay nagbibigay-daan sa iyo na magdagdag ng maraming pangyayari sa parehong element, walang pagbabago sa umiiral na pangyayari:

实例

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

亲自试一试

Maaari mong magdagdag ng iba't ibang uri ng pangyayari sa parehong element:

实例

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

亲自试一试

Magdagdag ng tagapagpasok ng pangyayari sa Window object

addEventListener() Pinapayagan mong magdagdag ng tagapagpasok ng pangyayari sa anumang HTML DOM object, tulad ng HTML element, HTML object, window object o anumang object na sumusuporta sa pangyayari, tulad ng xmlHttpRequest object.

实例

Magdagdag ng isang tagapagpasok ng pangyayari kapag nag-iirerestruktur ang window:

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 对象参考手册