1. 程式人生 > >js繫結事件方法:addEventListener與attachEvent的不同瀏覽器的相容性寫法

js繫結事件方法:addEventListener與attachEvent的不同瀏覽器的相容性寫法

js的事件繫結方法中,ie只支援attachEvent,而FF和Chrome只支援addEventListener,所以就必須為這兩個方法做相容處理,原理是先判斷attachEvent只否為真(存在),如果為真則用attachEvent()方法,否則的話就用addEventListener()。 另外,為了避免每次繫結事件時都要做判斷,可以封裝一個函式myAddEvent(obj,ev,fn){}。 程式碼如下: <!DOCTYPE html> <html> <head>     <meta charset="UTF-8">     <title>繫結</title>     <script>         window.onload = function()         {             var oBtn = document.getElementById("btn1");             //IE  attachEvent(事件名,函式),此方法只有ie支援,FF和Chrome均不支援             /*oBtn.attachEvent("onclick",function()             {                 alert("a");             });             oBtn.attachEvent("onclick",function()             {                 alert("b");             })*/             //FF和Chrome  addEventListener(事件名,函式),此方法ie不支援             /*oBtn.addEventListener("click",function()             {                 alert("a");             });             oBtn.addEventListener("click",function()             {                 alert("b");             })*/             //相容寫法:if/else判斷             /*if(oBtn.attachEvent)             {                 oBtn.attachEvent("onclick",function()                 {                     alert("a");                 });                 oBtn.attachEvent("onclick",function()                 {                     alert("b");                 })             }             else             {                 oBtn.addEventListener("click",function()                 {                     alert("a");                 },false);                 oBtn.addEventListener("click",function()                 {                     alert("b");                 },false)             }*/             //另外,還可以把這個相容寫法封裝成一個函式,這樣就不用每次繫結事件時都要判斷一下             function myAddEvent(obj,ev,fn)    //obj為要繫結事件的元素,ev為要繫結的事件,fn為繫結事件的函式             {                 if(obj.attachEvent)                 {                     obj.attachEvent("on" + ev,fn);                 }                 else                 {                     obj.addEventListener(ev,fn,false);                 }             }             myAddEvent(oBtn,"click",function()             {                 alert("a");             })             myAddEvent(oBtn,"click",function()             {                 alert("b");             })         }     </script> </head> <body> <input id="btn1" type="button" value="按鈕"/> </body> </html>