js实现的通用兼容低版本IE浏览器的事件注册和删除

快乐打工仔 分类:实例代码

本章节分享一段代码实例,它实现了兼容低版本IE浏览器的事件各种处理的封装。

比如事件处理函数注册、删除、阻止默认动作或者事件冒泡等功能。

代码实例如下:

var eventUtil ={
  addEvent:function(element,type,handler){
    if (element.addEventListener) {
      element.addEventListener(type,handler,false);
    }
    else if (element.attachEvent) {
      element.attachEvent('on'+type,handler);
    }
    else{
      element['on'+type] = handler;
    }
  },
  removeEvent:function(element,type,handler){
    if (element.removeEventListener) {
      element.removeEventListener(type,handler,false);
    }
    else if (element.detachEvent) {
      element.detachEvent('on'+type,handler);
    }
    else{
      element['on'+type] = null;
    }
  },
  getEvent:function(event){
    return event?event:window.event;
  },
  getType:function(event){
    return event.type;
  },
  getElement:function(event){
    return event.target || event.srcElement;
  },
  preventDefault:function(event){
    if(event.preventDefault){
      event.preventDefault();
    }
    else{
      event.returnValue = false;
    }
  },
  stopProPagation:function(event){
    if(event.stopProPagation){
      event.stopProPagation();
    }
    else{
      event.cancelBubble = true;
    }
  } 
}

上面实现了事件各种功能的封装,下面对它的实现过程进行一下注释。

一.代码注释:

(1).var eventUtil ={},以对象直接量的方式进行封装。

(2).addEvent:function(element,type,handler){},为元素注册事件处理函数,第一个参数是要注册事件处理函数的元素对象,第二个参数是事件类型,不带"on",第三个参数是事件处理函数。

(3).if (element.addEventListener) {

  element.addEventListener(type,handler,false);

}

else if (element.attachEvent) {

  element.attachEvent('on'+type,handler);

}

else{

  element['on'+type] = handler;

},首先判断是否支持标准的事件注册方式,如果支持就使用addEventListener(),再判断是否支持低版本IE浏览器的方式,如果支持则使用attachEvent(),否则就是用element['on'+type] = handler,其实也就是类似element.onclick=handler这种方式,其实后面的原理也是都是一样的。

二.相关阅读:

(1).addEventListener()方法可以参阅addEventListener()一章节。

(2).attachEvent()方法可以参阅javascript attachEvent()一章节。

(3).removeEventListener()方法可以参阅removeEventListener()方法和detachEvent()方法用法一章节。

(4).事件对象兼容可以参阅var ev=window.event||ev的作用是什么一章节。

(5).target属性可以参阅javascript event.target一章节。

(6).preventDefault()方法可以参阅javascript preventDefault()一章节。

(7).stopProPagation()方法可以参阅javascript stopPropagation()一章节。

回复

我来回复
  • 暂无回复内容