近日遇到attachEvent與addEventListener兩個事件,喲,果斷研究一下~~
先普及一下基本知識:
attachEvent與addEventListener的作用:為某一事件附加其它的處理事件。
網上普遍都是說attachEvent用於非Mozilla系列,addEventListener用於Mozilla系列。
(Mozilla系列在瀏覽器而言,即指火狐瀏覽器,本人認為也可以指支持w3c標准的系列瀏覽器)
理論上是這么說,還是得自己動手試一試!
結合查閱資料寫了以下代碼進行測試:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>attachEvent與addEventListener區別</title> <style type="text/css"> </style> </head> <body> <button id="btn1">點我</button> </body> <script type="text/javascript"> var btn1Obj = document.getElementById("btn1"); function method1(){ alert("method1"); } function method2(){ alert("method2"); } function method3(){ alert("method3"); } function attachEventListen(obj,e,fun){ /*obj.attachEvent ? obj.attachEvent("on"+e,fun) : obj.addEventListener(e,fun,false);*/ obj.attachEvent("on"+e,fun);//測試瀏覽器,發現:firefox、chrome、IE9、IE10、IE11、safari、opera都不兼容,IE7、IE8兼容, //obj.addEventListener(e,fun,false);//測試瀏覽器,發現:firefox、chrome、IE、safari、opera都兼容,IE7、IE8不兼容, } attachEventListen(btn1Obj,"click",method1); attachEventListen(btn1Obj,"click",method2); attachEventListen(btn1Obj,"click",method3); </script> </html>
運行結果注釋在了上面代碼中。(只測試了主流瀏覽器:IE7-11、firefox、chrome、opera、safari)
總結起來就是:
attachEvent——兼容:IE7、IE8;不兼容firefox、chrome、IE9、IE10、IE11、safari、opera
addEventListener——兼容:firefox、chrome、IE、safari、opera;不兼容IE7、IE8
由此也可以看出,從IE9開始,很多JS也已經按照W3c的標准;其他主流瀏覽器也在向W3c標准看齊。