1 var EventUtil = { 2 getEvent: function(event){ //获取事件对象 3 return event ? event : window.event; 4 }, 5 addHandler: function(element, type, handler){ //绑定事件 6 if (element.addEventListener) { 7 element.addEventListener(type, handler, false); 8 } else if (element.attachEvent) { 9 element.attachEvent("on" + type, handler); 10 } else { 11 element["on" + type] = handler; 12 13 } 14 }, 15 removeHandler: function(element, type, handler){ //移除绑定 16 if(element.removeEventListener){ 17 element.removeEventListener(type,handler,false); 18 }else if(element.detachEvent){ 19 element.detachEvent("on"+type,handler,false); 20 }else{ 21 element["on"+type] = null; 22 } 23 }, 24 preventDefault: function(event){ //阻止默认事件 25 if(event.preventDefault){ 26 event.preventDefault(); 27 }else{ 28 event.returnValue = false; 29 } 30 }, 31 stopPropagation: function(event){ //阻止事件冒泡 32 if (event.stopPropagation) { 33 event.stopPropagation(); 34 }else{ 35 event.cancelBubble = true; 36 } 37 }, 38 getRelateTarget: function(event){ //事件相关元素的信息 39 if(event.relatedTarget){ 40 return event.relatedTarget; 41 }else if(event.toElement){ 42 event.toElement; 43 }else if(event.fromElement){ 44 return event.fromElement; 45 }else{ 46 return null; 47 } 48 }, 49 getButton: function(event){ //检测button属性 50 if(document.implementation.hasFeature("MouseEvents","2.0")){ 51 return event.button; 52 }else{ 53 switch(event.button){ 54 case 0: 55 case 1: 56 case 3: 57 case 5: 58 case 7: 59 return 0;//主鼠标按钮 60 case 2: 61 case 6: 62 return 2;//次鼠标按钮 63 case 4: 64 return 1;//鼠标滚轮按钮 65 } 66 } 67 }, 68 getWheelDelta: function(event){//鼠标滚动属性值 69 if(event.wheelDelta){ 70 return (client.engine.opera && client.engine.opera <9.5 ? -event.wheelDelta:event.wheelDelta) 71 }else{ 72 return -event.detail *40; 73 } 74 }, 75 getCharCode: function(event){//获取字符编码 76 if(typeof event.charCode == "number"){ 77 return event.charCode; 78 }else{ 79 return event.keyCode; 80 } 81 }, 82 getCilpboardText: function(event){//获取剪切板内容 83 var cilpboardData = (event.clipboardData || window.clipboardData); 84 return clipboardData.getData("text"); 85 }, 86 setClipboardText:function(event,value){//剪切到剪切板 87 if(event.clipboardData){ 88 return event.clipboardData.setData("text/plain",value); 89 }else if(window.clipboardData){ 90 return window.clipboardData.setData("text",value); 91 } 92 } 93 94 95 }
代码总结于《JavaScript高级程序设计》事件章节。
Js事件对象EventUtil
时间: 2024-10-10 20:49:59