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) { //IE18 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