自己的js工具 Event封装


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(); 
} 
}
Javascript 相关文章推荐
js 匿名调用实现代码
Jun 19 Javascript
jQuery版仿Path菜单效果
Dec 15 Javascript
JS获取地址栏参数的小例子
Aug 23 Javascript
Visual Studio中js调试的方法图解
Jun 30 Javascript
js+css实现tab菜单切换效果的方法
Jan 20 Javascript
Bootstrap基本插件学习笔记之Alert警告框(20)
Dec 08 Javascript
canvas实现流星雨的背景效果
Jan 13 Javascript
JS基于对象的特性实现去除数组中重复项功能详解
Nov 17 Javascript
three.js中文文档学习之通过模块导入
Nov 20 Javascript
Vue按需加载的具体实现
Dec 02 Javascript
Openlayers测量距离与面积的实现方法
Sep 25 Javascript
JavaScript 生成唯一ID的几种方式
Feb 19 Javascript
自己的js工具 Cookie 封装
Aug 21 #Javascript
自己的js工具_Form 封装
Aug 21 #Javascript
javascript 面向对象编程基础 多态
Aug 21 #Javascript
javascript 面向对象编程基础:继承
Aug 21 #Javascript
javascript 面向对象编程基础:封装
Aug 21 #Javascript
javascript arguments 传递给函数的隐含参数
Aug 21 #Javascript
javascript 自定义事件初探
Aug 21 #Javascript
You might like
如何分别全角和半角以避免乱码
2006/10/09 PHP
php中的时间处理
2006/10/09 PHP
在MongoDB中模拟Auto Increment的php代码
2011/03/06 PHP
php file_put_contents()功能函数(集成了fopen、fwrite、fclose)
2011/05/24 PHP
php使用百度ping服务代码实例
2014/06/19 PHP
PHP实现的CURL非阻塞调用类
2018/07/26 PHP
jQuery Pagination Ajax分页插件(分页切换时无刷新与延迟)中文翻译版
2013/01/11 Javascript
jquery中选择块并改变属性值的方法
2013/07/31 Javascript
JavaScript使用二分查找算法在数组中查找数据的方法
2015/04/07 Javascript
JQuery select(下拉框)操作方法汇总
2015/04/15 Javascript
浅析Node.js中的内存泄漏问题
2015/06/23 Javascript
js实现获取div坐标的方法
2015/11/16 Javascript
JavaScript代码生成PDF文件的方法
2016/02/26 Javascript
JS比较两个数值的大小实例
2016/11/25 Javascript
详解AngularJS用Interceptors来统一处理HTTP请求和响应
2017/06/08 Javascript
VUE利用vuex模拟实现新闻点赞功能实例
2017/06/28 Javascript
Vue结合Video.js播放m3u8视频流的方法示例
2018/05/04 Javascript
[02:12]探秘2016国际邀请赛中国区预选赛选手房间
2016/06/25 DOTA
Python中变量交换的例子
2014/08/25 Python
Python中操作mysql的pymysql模块详解
2016/09/13 Python
python实现微信自动回复机器人功能
2019/07/11 Python
pytorch中如何使用DataLoader对数据集进行批处理的方法
2019/08/06 Python
python自动化工具之pywinauto实例详解
2019/08/26 Python
Python 私有属性和私有方法应用场景分析
2020/06/19 Python
美国派对用品及装饰品网上商店:Shindigz
2016/07/30 全球购物
百联网上商城:i百联
2017/01/28 全球购物
UNIX命令速查表
2012/03/10 面试题
生物科学专业个人求职信范文
2013/12/07 职场文书
司机检讨书
2014/02/13 职场文书
大学专科求职信
2014/07/02 职场文书
云台山导游词
2015/02/03 职场文书
2015年端午节活动总结
2015/02/11 职场文书
药品开票员岗位职责
2015/04/15 职场文书
人口与计划生育责任书
2015/05/09 职场文书
pytorch 权重weight 与 梯度grad 可视化操作
2021/06/05 Python
DSP接收机前端设想
2022/04/05 无线电