一般我們?cè)贘S中添加事件,是這樣子的
obj.onclick=method
這種綁定事件的方式好芭,兼容主流瀏覽器,但不能在同一個(gè)元素上添加多次同一事件:
obj.onclick=method1;
obj.onclick=method2;
obj.onclick=method3;
以上這種寫(xiě)法只會(huì)執(zhí)行method3饺谬。這并不能滿(mǎn)足開(kāi)發(fā)需求眶痰,特別是在團(tuán)隊(duì)開(kāi)發(fā)的時(shí)候谓谦,這時(shí)候事件綁定attachEvent(IE獨(dú)有的)和addEventListener就在十分必要了元暴。
//object.attachEvent(event,function);
btn1Obj.attachEvent("onclick",method1);
btn1Obj.attachEvent("onclick",method2);
btn1Obj.attachEvent("onclick",method3);
使用格式是前面是事件類(lèi)型,注意的是需要加on,比如onclick,onsubmit,onchange,執(zhí)行順序是:
method3->method2->method1
可惜這個(gè)微軟的私人方法,火狐和其他瀏覽器都不支持,幸運(yùn)的是他們都支持W3C標(biāo)準(zhǔn)的addEventListener方法
//element.addEventListener(type,listener,useCapture);
btn1Obj.addEventListener("click",method1,false);
btn1Obj.addEventListener("click",method2,false);
btn1Obj.addEventListener("click",method3,false);
執(zhí)行順序?yàn)? method1->method2->method3
以上兩種綁定方式的執(zhí)行順序是相反的,但是一般不會(huì)有太大影響。
以上內(nèi)容主要參考: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);
}
}