【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 };
原文地址:https://www.cnblogs.com/SHERO-Vae/p/5795999.html