【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 };