当前位置: 首页 > 图文教程 > 网络编程 > Javascript > 自己的js工具 Event封装

Javascript
动态生成js类的实现方法
漂亮的提示信息(带箭头)
实时编辑网页网页文字实时编辑,如同TEXTBOX一般
基于逻辑运算的简单权限系统(实现) JS 版
用 javascript 实现的点击复制代码
AutoSave/自动存储功能实现
JQuery 简便实现页面元素数据验证功能
5 cool javascript apps
jQuery使用手册之 事件处理
dojo 之基础篇
dojo 之基础篇(二)之从服务器读取数据
dojo 之基础篇(三)之向服务器发送数据
Ajax一统天下之Dojo整合篇
javascript对象的property和prototype是这样一种关系
this[] 指的是什么内容 讨论
用prototype实现的简单小巧的多级联动菜单
xml 与javascript结合的问题解决方法
tbody元素支持嵌套的注意方法
推荐dojo学习笔记
JavaScript判断两种格式的输入日期的正确性的代码

Javascript 中的 自己的js工具 Event封装


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-12   浏览: 525 ::
收藏到网摘: n/a

说到浏览器中的event,相信不少人都很头疼,ie的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();
}
}