zoukankan      html  css  js  c++  java
  • 【JavaScript代码实现二】通用的事件侦听器函数

     1 // event(事件)工具集,来源:github.com/markyun
     2 markyun.Event = {
     3     // 页面加载完成后
     4     readyEvent : function(fn) {
     5         if (fn==null) {
     6             fn=document;
     7         }
     8         var oldonload = window.onload;
     9         if (typeof window.onload != 'function') {
    10             window.onload = fn;
    11         } else {
    12             window.onload = function() {
    13                 oldonload();
    14                 fn();
    15             };
    16         }
    17     },
    18     // 视能力分别使用dom0||dom2||IE方式 来绑定事件
    19     // 参数: 操作的元素,事件名称 ,事件处理程序
    20     addEvent : function(element, type, handler) {
    21         if (element.addEventListener) {
    22             //事件类型、需要执行的函数、是否捕捉
    23             element.addEventListener(type, handler, false);
    24         } else if (element.attachEvent) {
    25             element.attachEvent('on' + type, function() {
    26                 handler.call(element);
    27             });
    28         } else {
    29             element['on' + type] = handler;
    30         }
    31     },
    32     // 移除事件
    33     removeEvent : function(element, type, handler) {
    34         if (element.removeEnentListener) {
    35             element.removeEnentListener(type, handler, false);
    36         } else if (element.datachEvent) {
    37             element.detachEvent('on' + type, handler);
    38         } else {
    39             element['on' + type] = null;
    40         }
    41     }, 
    42     // 阻止事件 (主要是事件冒泡,因为IE不支持事件捕获)
    43     stopPropagation : function(ev) {
    44         if (ev.stopPropagation) {
    45             ev.stopPropagation();
    46         } else {
    47             ev.cancelBubble = true;
    48         }
    49     },
    50     // 取消事件的默认行为
    51     preventDefault : function(event) {
    52         if (event.preventDefault) {
    53             event.preventDefault();
    54         } else {
    55             event.returnValue = false;
    56         }
    57     },
    58     // 获取事件目标
    59     getTarget : function(event) {
    60         return event.target || event.srcElement;
    61     },
    62     // 获取event对象的引用,取到事件的所有信息,确保随时能使用event;
    63     getEvent : function(e) {
    64         var ev = e || window.event;
    65         if (!ev) {
    66             var c = this.getEvent.caller;
    67             while (c) {
    68                 ev = c.arguments[0];
    69                 if (ev && Event == ev.constructor) {
    70                     break;
    71                 }
    72                 c = c.caller;
    73             }
    74         }
    75         return ev;
    76     }
    77 };
  • 相关阅读:
    「题解」:07.16NOIP模拟T1:礼物
    「题解」:07.16NOIP模拟T2:通讯
    「题解」:图论专题总结
    07.07NOIP模拟赛
    [复习]平衡树splay
    「题解」:[组合数学][DP]:地精部落
    「题解」:[组合数学]:Perm 排列计数
    「题解」:[组合数学]:排队
    dp 杂题
    插头 dp 总结
  • 原文地址:https://www.cnblogs.com/SHERO-Vae/p/5795999.html
Copyright © 2011-2022 走看看