事件对象库
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了事件对象库相关的知识,希望对你有一定的参考价值。
1 //事件对象库; 2 var EventUtil={ 3 addEvent:function(obj,type,fn){ 4 if(obj.addEventListener){ 5 obj.addEventListener(type,fn,false); 6 }else if(obj.attachEvent){ 7 obj.attachEvent(‘on‘+type,fn); 8 } 9 }, 10 removeEvent:function(obj,type,fn){ 11 if(obj.removeEventListener){ 12 obj.removeEvent(type,fn,false); 13 }else if(obj.detachEvent){ 14 obj.detachEvent(‘on‘+type,fn); 15 } 16 }, 17 getEvent:function(e){ //获取事件对象 18 return e.target|| event.srcElement; 19 }, 20 preventDefault:function(e){ //阻止默认行为; 21 if(e.preventDefault){ 22 e.preventDefault(); 23 }else{ 24 e.returnValue=false; 25 } 26 }, 27 stopPropagation:function(e){ //阻止冒泡; 28 if(e.stopPropagation){ 29 e.stopPropagation(); 30 }else{ 31 e.cancelBubble=true; 32 } 33 }, 34 clientXY:function(e){ //获取可视范围内的鼠标位置; 35 var T=document.documentElement.scrollTop||document.body.scrollTop; 36 var L=document.documentElement.scrollLeft||document.body.scrollLeft; 37 return {x:L+clientX , y:T+e.clientY}; 38 }, 39 getRelatedTarget:function(e){ 40 if(e.relatedTarget){ 41 return e.relatedTarget; 42 }else if(event.toElement){ 43 return e.toElement; 44 }else if(e.toElement){ 45 return e.fromElement; 46 }else{ 47 return null; 48 } 49 }, 50 getButton:function(e){ 51 if(document.implementation.hasFeature("MouseEvents","2.0")){ 52 return e.button; 53 }else{ 54 switch(e.button){ 55 case 0: 56 case 1: 57 case 3: 58 case 5: 59 case 7: 60 return 0; 61 case 2: 62 case 6: 63 return 2; 64 case 4: 65 return 1; 66 } 67 } 68 }, 69 getCharCode:function(e){ 70 if(typeof event.charCode==‘number‘){ 71 return e.charCode; 72 }else{ 73 return e.keyCode; 74 } 75 }, 76 getWheelDelta:function(e){ 77 if(e.wheelDelta){ 78 return (client.engine.opera && client.engine.opera<9.5? -event.wheelDelta :event.wheelDelta); 79 }else{ 80 return -event.detail *40; 81 } 82 } 83 };
以上是关于事件对象库的主要内容,如果未能解决你的问题,请参考以下文章
Android 事件分发事件分发源码分析 ( Activity 中各层级的事件传递 | Activity -> PhoneWindow -> DecorView -> ViewGroup )(代码片段