addEventListener() 方法:
语法:element.addEventListener(event, function, useCapture);
第一个参数是事件的类型 (如 "click" ). //这里的事件句柄是不带on的
第二个参数是事件触发后调用的函数。
第三个参数是个布尔值用于描述事件是冒泡还是捕获。该参数是可选的。默认为false。
优点:
该方法同时支持事件处理的捕获和冒泡阶段。事件阶段取决于addEventListener最后的参数设置:false (冒泡) 或 true (捕获)。
在事件处理函数内部,this关键字引用当前元素。
事件对象总是可以通过处理函数的第一个参数(e)捕获。
可以为同一个元素绑定你所希望的多个事件,同时并不会覆盖先前绑定的事件
缺点:
IE不支持,必须使用IE的attachEvent函数替代。
attachEvent() 方法:
语法:element.attachEvent(event, function);
第一个参数是事件的类型 (如 "onclick"). //这里的事件句柄是带on的
第二个参数是事件触发后调用的函数。
注意:此方法只有冒泡阶段。
通过事件监听方式注册事件
非IE:元素对象.addEventListener(不带on的事件句柄,事件处理函数,事件流顺序默认flase)
IE:元素对象.attachEvent(带on的事件句柄,事件处理函数)
obj:事件源
type:事件类型(不带on)
fn:事件处理函数
//这是一个封装好的事件监听注册方法 兼容非IE和IE
function addEvent(obj,type,fn){
if(obj.addEventListener){
obj.addEventListener(type,fn,false);
}else{
obj.attachEvent("on"+type,fn);
}
}
移除事件监听
非IE:元素对象.removeEventListener(不带on的事件句柄,事件处理函数,事件流顺序默认flase)
IE:元素对象.detachEvent(带on的事件句柄,事件处理函数)
//这是一个封装好的事件监听移除方法 兼容非IE和IE
function removeEvent(obj,type,fn){
if(obj.removeEventListener(){
obj.removeEventListener(type,fn,false);
}else{
obj.detachEvent("on"+type,fn);
}
}