通用的事件侦听器函数

 1 // 把所有方法封装到一个对象里面,充分考虑兼容写法
 2 var EventUtil = {
 3   // 添加DOM事件
 4   addEvent: function(element, type, handler) {
 5     if(element.addEventListener) { //DOM2级
 6       element.addEventListener(type, handler, false);
 7     }else if(element.attachEvent) {  //IE
 8       element.attachEvent("on"+ type, handler);
 9     }else {
10       element["on" + type] = handler;
11     }
12   },
13   // 移除DOM事件
14   removeEvent: function(element, type, handler) {
15     if(element.removeEventListener) { //DOM2级
16       element.removeEventListener(type, handler, false);
17     }else if(element.detachEvent) {  //IE
18       element.detachEvent("on"+ type, handler);
19     }else {
20       element["on" + type] = null;
21     }
22   },
23   // 阻止事件冒泡
24   stopPropagation: function(ev) {
25     if(ev.stopPropagation) {
26       ev.stopPropagation();
27     }else {
28       ev.cancelBubble = true;
29     }
30   },
31   // 阻止默认事件
32   preventDefault: function(ev) {
33     if(ev.preventDefault) {
34       ev.preventDefaule();
35     }else {
36       ev.returnValue = false;
37     }
38   },
39   // 获取事件源对象
40   getTarget: function(ev) {
41     return event.target || event.srcElement;
42   },
43   // 获取事件对象
44   getEvent: function(e) {
45     var ev = e || window.event;
46     if(!ev) {
47       var c = this.getEvent.caller;
48       while(c) {
49         ev = c.arguments[0];
50         if(ev && Event == ev.constructor) {
51           break;
52         }
53         c = c.caller;
54       }
55     }
56     return ev;
57   }
58 };
59