近日遇到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標准看齊。
