javascript 事件处理示例分享
废话少说,直接奉上示例代码:
<scripttype="text/javascript"> functionEventUtil(){ var_self=this; ///添加事件 varaddEvent=(function(){ if(document.addEventListener){ returnfunction(el,type,fn){ el.addEventListener(type,fn,false); } }else{ returnfunction(el,type,fn){ el.attachEvent("on"+type,function(){ returnfn.call(el,window.event); }); } } })(); ///添加属性改变事件 varaddPropertyChangeEvent=function(obj,fn){ if(window.ActiveXObject){ obj.onpropertychange=fn; }else{ obj.addEventListener("input",fn,false); } } //移除事件 varremoveEvent=function(obj,type,fn){ if(obj.removeEventListener){ obj.removeEventListener(type,fn,false); }elseif(obj.detachEvent){ obj.detachEvent("on"+type,obj["on"+type+fn]); obj["on"+type+fn]=null; } } //加载事件 varloadEvent=function(fn){ varoldonload=window.onload; if(typeofoldonload!="function"){ window.onload=fn; }else{ window.onload=function(){ oldonload(); fn(); } } } //阻止事件 varstopEvent=function(e){ e=e||window.event; if(e.preventDefault){ e.preventDefault(); e.stopPropagation(); }else{ e.returnValue=false; e.cancelBubble=true; } } //如果仅仅是阻止事件冒泡 varstopPropagation=function(e){ e=e||window.event; if(!+"\v1"){ e.cancelBubble=true; }else{ e.stopPropagation(); } } //取得事件源对象 vargetEvent1=function(e){ e=e||window.event; varobj=e.srcElement?e.srcElement:e.target; returnobj; } //取得事件源对象 vargetEvent2=function(e){ if(window.event)returnwindow.event; varc=getEvent2.caller; while(c.caller){ c=c.caller; } returnc.arguments[0]; } //或者这个功能更强大 vargetEvent3=function(e){ vare=e||window.event; if(!e){ varc=this.getEvent3.caller; while(c){ e=c.arguments[0]; if(e&&(Event==e.constructor||MouseEvent==e.constructor)){ break; } c=c.caller; } } vartarget=e.srcElement?e.srcElement:e.target, currentN=target.nodeName.toLowerCase(), parentN=target.parentNode.nodeName.toLowerCase(), grandN=target.parentNode.parentNode.nodeName.toLowerCase(); return[e,target,currentN,parentN,grandN]; }
_self.addEvent=addEvent; _self.addPropertyChangeEvent=addPropertyChangeEvent; _self.removeEvent=removeEvent; _self.loadEvent=loadEvent; _self.stopEvent=stopEvent; _self.stopPropagation=stopPropagation; _self.getEvent1=getEvent1; _self.getEvent2=getEvent2; _self.getEvent3=getEvent3; } vareventUtil=newEventUtil(); eventUtil.loadEvent(function(){ eventUtil.addEvent(document,"click",function(e){ alert(eventUtil.getEvent3(e)); }); eventUtil.addPropertyChangeEvent(document,function(e){ alert(eventUtil.getEvent3(e)); }); }); </script>