一般我们在JS中添加事件,是这样子的
obj.onclick=method
这种绑定事件的方式,兼容主流浏览器,但不能在同一个元素上添加多次同一事件:
obj.onclick=method1;
obj.onclick=method2;
obj.onclick=method3;
以上这种写法只会执行method3。这并不能满足开发需求,特别是在团队开发的时候,这时候事件绑定attachEvent(IE独有的)和addEventListener就在十分必要了。
//object.attachEvent(event,function);
btn1Obj.attachEvent("onclick",method1);
btn1Obj.attachEvent("onclick",method2);
btn1Obj.attachEvent("onclick",method3);
使用格式是前面是事件类型,注意的是需要加on,比如onclick,onsubmit,onchange,执行顺序是:
method3->method2->method1
可惜这个微软的私人方法,火狐和其他浏览器都不支持,幸运的是他们都支持W3C标准的addEventListener方法
//element.addEventListener(type,listener,useCapture);
btn1Obj.addEventListener("click",method1,false);
btn1Obj.addEventListener("click",method2,false);
btn1Obj.addEventListener("click",method3,false);
执行顺序为: method1->method2->method3
以上两种绑定方式的执行顺序是相反的,但是一般不会有太大影响。
以上内容主要参考:https://www.oschina.net/question/54100_25614
以下是兼容处理方法:
function addEvent(obj,oEvn,fn){
if(obj.addEventListener){
obj.addEventListener(oEvn,fn,false);
}else{
obj.attachEvent('on'+oEvn,fn);
}
}
网友评论