element.addEventListener(event, function, useCapture);
第一个参数是事宜的类型 (如 “click” 或 “mousedown”),详参【事宜类型】
第二个参数是事宜触发后调用的函数。
第三个参数是布尔值,用于描述事宜是冒泡还是捕获,该参数可选。

把稳:不要利用 “on” 前缀。 例如,利用 “click” ,而不是利用 “onclick”。
可以利用函数名,来引用外部函数:
element.addEventListener("click", function(){ alert("Hello World!"); });element.addEventListener("click", myFunction);function myFunction() { alert ("Hello World!");}
向 Window 工具添加事宜句柄
window.addEventListener("resize", function(){ document.getElementById("demo").innerHTML = sometext;});
通报参数
当通报参数值时,利用"匿名函数"调用带参数的函数:
var p1 = 5;var p2 = 7;document.getElementById("myBtn").addEventListener("click", function() { myFunction(p1, p2);});function myFunction(a, b) { var result = a b; document.getElementById("demo").innerHTML = result;}
事宜冒泡与捕获
事宜通报有两种办法:冒泡与捕获。
事宜通报定义了元素事宜触发的顺序。 如果将 <p> 元素插入到 <div> 元素中,用户点击 <p> 元素, 哪个元素的 “click” 事宜先被触发呢?
在 冒泡 中,内部元素的事宜会先被触发,然后再触发外部元素,即: <p> 元素的点击事宜先触发,然后再触发 <div> 元素的点击事宜。
在 捕获 中,外部元素的事宜会先被触发,然后才会触发内部元素的事宜,即: <div> 元素的点击事宜先触发 ,然后再触发 <p> 元素的点击事宜。
addEventListener() 方法可以指定 “useCapture” 参数来设置通报类型:
addEventListener(event, function, useCapture);
默认值为 false, 即冒泡通报,当值为 true 时, 事宜利用捕获通报。
document.getElementById("myDiv").addEventListener("click", myFunction, true);
removeEventListener()
removeEventListener()移除由 addEventListener() 添加的事宜句柄:
element.removeEventListener("mousemove", myFunction);
浏览器兼容处理
var x = document.getElementById("myBtn");if (x.addEventListener) { // 所有主流浏览器,除了IE8及更早版本 x.addEventListener("click", myFunction);} else if (x.attachEvent) { // IE8及更早版本 x.attachEvent("onclick", myFunction);}
IE 8 及更早 IE 版本,Opera 7.0及其更早版本不支持 addEventListener() 和 removeEventListener() 。但是,对付这类浏览器版本可以利用attachEvent()、 detachEvent() 来添加、移除事宜句柄:
element.attachEvent(event, function);element.detachEvent(event, function);