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