自己的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 相关文章推荐
JQuery 技巧和窍门整理(8个)
Apr 22 Javascript
Javascript学习笔记之 函数篇(一) : 函数声明和函数表达式
Jun 24 Javascript
javascript实现类似java中getClass()得到对象类名的方法
Jul 27 Javascript
Bootstrap的图片轮播示例代码
Aug 31 Javascript
javascript每日必学之基础入门
Feb 16 Javascript
BootstrapTable请求数据时设置超时(timeout)的方法
Jan 22 Javascript
Vue2.0组件间数据传递示例
Mar 07 Javascript
基于Vue.js 2.0实现百度搜索框效果
Dec 28 Javascript
使用js实现单链解决前端队列问题的方法
Feb 03 Javascript
Javascript操作select控件代码实例
Feb 14 Javascript
在vue中使用eslint,配合vscode的操作
Nov 09 Javascript
JavaScript实现前端网页版倒计时
Mar 24 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
PHP反转字符串函数strrev()函数的用法
2012/02/04 PHP
Zend Framework生成验证码并实现验证码验证功能(附demo源码下载)
2016/03/22 PHP
YII2框架中behavior行为的理解与使用方法示例
2020/03/13 PHP
jQuery点击后一组图片左右滑动的实现代码
2012/08/16 Javascript
jquery写个checkbox——类似邮箱全选功能
2013/03/19 Javascript
javascript中的if语句使用介绍
2013/11/20 Javascript
js中window.open()的所有参数详细解析
2014/01/09 Javascript
Javascript基础教程之argument 详解
2015/01/18 Javascript
jQuery Easyui datagrid/treegrid 清空数据
2016/07/09 Javascript
Jquery Easyui菜单组件Menu使用详解(15)
2016/12/18 Javascript
jquery实现焦点轮播效果
2017/02/23 Javascript
浅谈JS如何实现真正的对象常量
2017/06/25 Javascript
深入浅析Node.js单线程模型
2017/07/10 Javascript
Nodejs 和 Electron ubuntu下快速安装过程
2018/05/04 NodeJs
基于vue-cli npm run build之后vendor.js文件过大的解决方法
2018/09/27 Javascript
javascript实现数字时钟效果
2021/02/06 Javascript
[43:35]TI4 循环赛第二日Liquid vs Fnatic
2014/07/11 DOTA
使用python爬虫实现网络股票信息爬取的demo
2018/01/05 Python
Python pandas.DataFrame调整列顺序及修改index名的方法
2019/06/21 Python
Python Web版语音合成实例详解
2019/07/16 Python
详解Python 4.0 预计推出的新功能
2019/07/26 Python
Python中包的用法及安装
2020/02/11 Python
基于Python数据分析之pandas统计分析
2020/03/03 Python
利用scikitlearn画ROC曲线实例
2020/07/02 Python
Pandas DataFrame求差集的示例代码
2020/12/13 Python
详解canvas在圆弧周围绘制文本的两种写法
2018/05/22 HTML / CSS
html5 Canvas画图教程(7)—canvas里画曲线之quadraticCurveTo方法
2013/01/09 HTML / CSS
德国的大型美妆个护电商:Flaconi
2020/06/26 全球购物
干部作风建设个人剖析材料
2014/10/11 职场文书
2014年助理工程师工作总结
2014/11/14 职场文书
北京天坛导游词
2015/02/12 职场文书
春节慰问信范文
2015/02/15 职场文书
七一晚会主持词
2015/06/29 职场文书
python中sqllite插入numpy数组到数据库的实现方法
2021/06/21 Python
WebWorker 封装 JavaScript 沙箱详情
2021/11/02 Javascript
Oracle删除归档日志及添加定时任务
2022/06/28 Oracle