Posted in Javascript onAugust 21, 2009
因为ie的event是全局的而firefox的event是局部的,用起来不太方便,这个时候我们就要自己组装一下常用的event操作了,封装成类便于重用
/** 类 Event 用法: Event.getEvent();获取 ie,firefox的event Event.getTarget();获取ie的srcElement或firefox的target Event.isIe();是否为ie Event.clientX(); 获取ie,fox的鼠标x坐标 Event.clientY();获取 ie,fox的鼠标y坐标 */ var Event=new function(){ this.toString=function(){ return this.getEvent(); } //获取 事件 this.getEvent=function(){ var ev=window.event; if(!ev){ var c=this.getEvent.caller; while(c){ ev=c.arguments[0]; if(ev && Event ==ev.constructor) break; c=c.caller; } } return ev; }; //获取 事件源 this.getTarget=function(){ var ev=this.getEvent(); return this.isIe()?ev.srcElement:ev.target; } //是否为ie this.isIe=function(){ return document.all?true:false; } //鼠标x坐标 this.clientX=function(){ var ev=this.getEvent(); var x=this.isIe()?ev.clientX:ev.pageX; return x; } //鼠标y坐标 this.clientY=function(){ var ev=this.getEvent(); var y=this.isIe()?ev.clientY:ev.pageY; return y; } /**增加事件(对象,事件类型,函数指针 ) obj: html对象 sEvent: 事件名称 spNotify: 事件执行的方法 isCapture:是否允许全屏捕捉 */ this.addEvent=function(obj,sEvent,fpNotify,isCapture){ sEvent=sEvent.indexOf("on")!=-1?sEvent:"on"+sEvent; if(obj.addEventListener){ sEvent=sEvent.substring(sEvent.indexOf("on")+2); obj.addEventListener(sEvent,fpNotify,isCapture); }else{ //ie if(isCapture) obj.setCapture(isCapture); obj.attachEvent(sEvent,fpNotify); } } //移除事件 this.removeEvent=function(obj,sEvent,fpNotify){ if(obj.removeEventListener){ sEvent=sEvent.substring(sEvent.indexOf("on")+2) obj.removeEventListener(sEvent,fpNotify,false); }else{ obj.detachEvent(sEvent,fpNotify); } } //获取鼠标按键,left=1,middle=2,right=3 this.button=function(){ var ev=this.getEvent(); if(!ev.which&&ev.button){//ie return ev.button&1?1:(ev.button&2?3:(ev.button&4?2:0)) } return ev.which; }; //阻止事件冒泡传递 this.stopPropagation=function(){ var ev=this.getEvent(); if(this.isIe) ev.cancelBubble=true; else ev.stopPropagation(); } //阻止默认事件返回 this.preventDefault=function(){ var ev=this.getEvent(); if(this.isIe) ev.returnValue=false; else ev.preventDefault(); } }
自己的js工具 Event封装
声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@