JS中注册与移除事件的几种方式
一、注册事件
1、通过element.onclick方式注册事件,存在无法给同一个对象的同一个事件注册多个事件处理函数的问题
2、通过element.addEventListenner()方式注册事件,存在浏览器兼容性的问题(IE9以后才支持此方法)
3、通过element.attachEvent()方式注册事件,同样存在浏览器兼容性的问题(IE6-IE10特有的方法)
兼容性处理函数:
1 function addEventListener(element,eventName,fn){ 2 //判断当前浏览器是否支持此方法 3 if(element.addEventListener){ 4 element.addEventListener(eventName,fn) 5 }else if(element.attachEvent){ 6 element.attachEvent("on"+eventName,fn); 7 }else{ 8 // 相当于element.onclick=fn; 9 element["on"+eventName]=fn; 10 }
二、移除事件
1、使用element.onclick=null来移除
2、使用element.removeEventListener()来移除
3、使用element.detachEvent()来移除(IE9-IE10支持)
兼容性处理函数:
1 function removeEventListener(element,eventName,fn){ 2 if(element.removeEventListener){ 3 element.removeEventListener(eventName,fn); 4 } else if(element,detachEvent){ 5 element.detachEvent("on"+eventName,fn); 6 }else{ 7 element["on"+eventName]=null; 8 } 9 }