zoukankan      html  css  js  c++  java
  • 写一个通用的事件侦听器函数?

    代码:

    // 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();
          };
        }
      },
      // 视能力分别使用dom0||dom2||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;
      }
    };
    
  • 相关阅读:
    关于struts2的checkboxlist、select等标签发生could not be resolved as a collection/array/map/enumeration/iterator type异常的记录
    ajax Session失效如何跳转到登录页面
    将默认首页设置成index.do的方法
    tomcat应用转到weblogic上时的问题
    MyEclipse 8.5整合Git,并在Github上发布项目(转)
    C++ 类设计核查表
    编程书籍
    并发模型
    C++ AOP手法
    编程 网上资源平台
  • 原文地址:https://www.cnblogs.com/crazycode2/p/11627351.html
Copyright © 2011-2022 走看看