写一个通用的事件侦听器函数?

//Event工具集,from:github.com/markyunmarkyun.
Event = {
   //页面加载完成后
   readyEvent: function(fn) {
       if (fn == null) {
           fn = document;
       } 
    var oldonload = window.onload; 
    if (typeof window.onload != 'function') {
         window.onload = fn; 
    }else{
         window.onload = function() { 
            oldonload(); 
            fn();
         }; 
    }
  }, 
    //视能力分别使用 demo0 || demo1 || IE 方式来绑定事件 
    //参数:操作的元素,事件名称,事件处理程序 
    addEvent: function(element,type,handler) { 
        if (element.addEventListener) { //事件类型、需要执行的函数、是否捕捉   
             element.addEventListener(type,handler,false); 
        }else if (element.attachEvent) { 
            element.attachEvent('on' + type, function() {
                  handler.call(element);
             }); 
        }else { 
            element['on' + type] = handler; 
        }
     }, 
    //移除事件 
     removeEvent: function(element,type,handler) {
        if (element.removeEventListener) {
             element.removeEventListener(type,handler,false); 
        }else if (element.datachEvent) { 
             element.datachEvent('on' + type,handler); 
        }else{
             element['on' + type] = null;
        }
      },
   //阻止事件(主要是事件冒泡,因为IE不支持事件捕获) 
    stopPropagation: function(ev) { 
        if (ev.stopPropagation) { 
             ev.stopPropagation(); 
        }else { 
             ev.cancelBubble = true;
        }
     }, 
   //取消事件的默认行为
    preventDefault: function(event) {
       if (event.preventDefault) { 
            event.preventDefault(); 
       }else{
            event.returnValue = false; 
       }
    }, 
   //获取事件目标 
   getTarget: function(event) { 
      return event.target || event.srcElemnt; 
   },
   //获取event对象的引用,取到事件的所有信息,确保随时能使用event; 
   getEvent: function(e) { 
      var ev = e || window.event;
      if (!ev) { 
          var c = this.getEvent.caller; 
          while(c) { 
              ev = c.argument[0]; 
              if (ev && Event == ev.constructor) {
                   break; 
              } 
              c = c.caller; 
          } 
      } 
      retrun ev; 
    }
};

猜你喜欢

转载自blog.csdn.net/weixin_38049458/article/details/69230687