自己的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扩展插件Validate 3通过参数设置错误信息
Sep 05 Javascript
JS将秒换成时分秒实现代码
Sep 03 Javascript
jQuery对Select的操作大集合(收藏)
Dec 28 Javascript
js中call与apply的用法小结
Dec 28 Javascript
js代码实现的加入收藏效果并兼容主流浏览器
Jun 23 Javascript
jquery实现简单的无缝滚动
Apr 15 Javascript
jQuery解析Json实例详解
Nov 24 Javascript
js实现的万能flv网页播放器代码
Apr 30 Javascript
Javascript 对cookie操作详解及实例
Dec 29 Javascript
JS中input表单隐藏域及其使用方法
Feb 13 Javascript
JavaScript+CSS相册特效实例代码
Sep 07 Javascript
关于微信小程序获取小程序码并接受buffer流保存为图片的方法
Jun 07 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
JS实现php的伪分页
2008/05/25 PHP
大家在抢红包,程序员在研究红包算法
2015/08/31 PHP
整理php防注入和XSS攻击通用过滤
2015/09/13 PHP
Javascript简单改变表单元素背景的方法
2015/07/15 Javascript
jQuery实现的倒计时效果实例小结
2016/04/16 Javascript
js获取页面及个元素高度、宽度的代码
2016/04/26 Javascript
Node.js刷新session过期时间的实现方法推荐
2016/05/18 Javascript
js实现四舍五入完全保留两位小数的方法
2016/08/02 Javascript
nodejs和php实现图片访问实时处理
2017/01/05 NodeJs
JS判断一个数是否是水仙花数
2017/06/11 Javascript
微信小程序引用iconfont图标的方法
2018/10/22 Javascript
vue代码分割的实现(codesplit)
2018/11/13 Javascript
详解jQuery-each()方法
2019/03/13 jQuery
vue+element模态框中新增模态框和删除功能
2019/06/11 Javascript
Vue的属性、方法、生命周期实例代码详解
2019/09/17 Javascript
Python中使用HTMLParser解析html实例
2015/02/08 Python
简介Django中内置的一些中间件
2015/07/24 Python
Python中time模块与datetime模块在使用中的不同之处
2015/11/24 Python
从局部变量和全局变量开始全面解析Python中变量的作用域
2016/06/16 Python
Python读取word文本操作详解
2018/01/22 Python
Python实现最大子序和的方法示例
2019/07/05 Python
python 解决flask 图片在线浏览或者直接下载的问题
2020/01/09 Python
自定义Django默认的sitemap站点地图样式
2020/03/04 Python
Windows10+anacond+GPU+pytorch安装详细过程
2020/03/24 Python
台湾网购生鲜第一品牌:i3Fresh爱上新鲜
2017/10/26 全球购物
数据库笔试题
2013/05/09 面试题
初级Java程序员面试题
2016/03/03 面试题
会计自我鉴定
2013/11/02 职场文书
品质主管的岗位职责
2013/12/04 职场文书
个人实习生的自我评价
2014/02/16 职场文书
电台实习生求职信
2014/02/25 职场文书
2014年节能减排工作总结
2014/12/06 职场文书
生产车间主任岗位职责
2015/04/08 职场文书
大学生逃课检讨书
2015/05/04 职场文书
React-vscode使用jsx语法的问题及解决方法
2021/06/21 Javascript
Elasticsearch 聚合查询和排序
2022/04/19 Python