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;
      }
    };
    
  • 相关阅读:
    sharding-jdbc精确分片配置
    sharding-jdbc注意事项
    sharding-jdbc绑定表和公共表
    go 语言解析yaml文件作为配置文件
    go语言添加全局的json配置文件
    go查询数据库讲单数据结果绑定结构体
    sharding-jdbc分库分表节点路由
    增强for循环对遍历的集合进行增删改操作会出现并发修改异常
    go语言数据模型改变响应给前端字段名
    视图
  • 原文地址:https://www.cnblogs.com/crazycode2/p/11627351.html
Copyright © 2011-2022 走看看