自己的js工具 Event封装

  因为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();

  }

  }