通用的事件侦听器函数


// event(事件)工具集,来源:github.com/markyun

  markyun.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();
              };
          }
      },
      // 视能力分别使用dom 0 ||dom 2 ||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.removeEnentListener) {
              element.removeEnentListener(type, handler, false);
          } else if (element.datachEvent) {
              element.detachEvent( '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.srcElement;
      },
      // 获取event对象的引用,取到事件的所有信息,确保随时能使用event;
      getEvent : function(e) {
          var ev = e || window.event;
          if (!ev) {
              var c = this.getEvent.caller;
              while (c) {
                  ev = c.arguments[ 0 ];
                  if (ev && Event == ev.constructor) {
                      break;
                  }
                  c = c.caller;
              }
          }
          return ev;
      }
  };


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM