自己的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 相关文章推荐
IE6下通过a标签点击切换图片的问题
Nov 14 Javascript
JavaScript和CSS交互的方法汇总
Dec 02 Javascript
BOOTSTRAP时间控件显示在模态框下面的bug修复
Feb 05 Javascript
jQuery实现仿腾讯迷你首页选项卡效果代码
Sep 17 Javascript
JavaScript实现简单获取当前网页网址的方法
Nov 09 Javascript
JavaScript中的ParseInt("08")和“09”返回0的原因分析及解决办法
May 19 Javascript
详解javascript事件绑定使用方法
Oct 20 Javascript
setTimeout函数的神奇使用
Feb 26 Javascript
微信小程序中顶部导航栏的实现代码
Mar 30 Javascript
用Node编写RESTful API接口的示例代码
Jul 04 Javascript
新手入门带你学习JavaScript引擎运行原理
Jun 24 Javascript
Vue实现 点击显示再点击隐藏效果(点击页面空白区域也隐藏效果)
Jan 16 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
全国FM电台频率大全 - 12 安徽省
2020/03/11 无线电
PHP中实现获取IP和地理位置类分享
2015/02/10 PHP
可以把编码转换成 gb2312编码lib.UTF8toGB2312.js
2007/08/21 Javascript
JQuery1.4+ Ajax IE8 内存泄漏问题
2010/10/15 Javascript
jquery的键盘事件修改代码
2011/02/24 Javascript
JS获取整个页面文档的实现代码
2011/12/15 Javascript
非html5实现js版弹球游戏示例代码
2013/09/22 Javascript
node.js学习总结之调式代码的方法
2014/06/25 Javascript
js中的getAttribute方法使用示例
2014/08/01 Javascript
基于javascript的COOkie的操作实现只能点一次
2014/12/26 Javascript
js判断子窗体是否关闭的方法
2015/08/11 Javascript
jquery弹出遮掩层效果【附实例代码】
2016/04/28 Javascript
javascript实现简单的ajax封装示例
2016/12/28 Javascript
JavaScript使用ZeroClipboard操作剪切板
2017/05/10 Javascript
Postman的下载及安装教程详解
2018/10/16 Javascript
深入了解JavaScript 的 WebAssembly
2019/06/15 Javascript
在vue中使用Echarts利用watch做动态数据渲染操作
2020/07/20 Javascript
python切换hosts文件代码示例
2013/12/31 Python
Python运用于数据分析的简单教程
2015/03/27 Python
使用Python中的cookielib模拟登录网站
2015/04/09 Python
python文件的md5加密方法
2016/04/06 Python
Python编程实现的图片识别功能示例
2017/08/03 Python
Python多继承顺序实例分析
2018/05/26 Python
详解Django+Uwsgi+Nginx 实现生产环境部署
2018/11/06 Python
python解析含有重复key的json方法
2019/01/22 Python
python爬虫刷访问量 2019 7月
2019/08/01 Python
Python按照list dict key进行排序过程解析
2020/04/04 Python
Python 炫技操作之合并字典的七种方法
2020/04/10 Python
Python使用Paramiko控制liunx第三方库
2020/05/20 Python
接口自动化多层嵌套json数据处理代码实例
2020/11/20 Python
Belvilla法国:休闲度假房屋出租
2020/10/03 全球购物
超市采购员岗位职责
2014/02/01 职场文书
离职证明范本(5篇)
2014/09/19 职场文书
乡党委干部党的群众路线教育实践活动个人对照检查材料思想汇报
2014/10/01 职场文书
职场领导同事生日简短祝福语
2019/08/06 职场文书
Python深度学习之实现卷积神经网络
2021/06/05 Python