自己的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 相关文章推荐
Javascript 去除数组的重复元素
May 04 Javascript
JS维吉尼亚密码算法实现代码
Nov 09 Javascript
Jquery 插件开发笔记整理
Jan 17 Javascript
AngularJS基础知识
Dec 21 Javascript
javascript+HTML5的canvas实现七夕情人节3D玫瑰花效果代码
Aug 04 Javascript
js淡入淡出的图片轮播效果代码分享
Aug 24 Javascript
利用AJAX实现WordPress中的文章列表及评论的分页功能
May 17 Javascript
JavaScript中全选、全不选、反选、无刷新删除、批量删除、即点即改入库(在yii框架中操作)的代码分享
Nov 01 Javascript
jquery html5 视频播放控制代码
Nov 06 Javascript
js通过classname来获取元素的方法
Nov 24 Javascript
详解node Async/Await 更好的异步编程解决方案
May 10 Javascript
vue中h5端打开app(判断是安卓还是苹果)
Feb 26 Vue.js
自己的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在线生成二维码(google api)的实现代码详解
2013/06/04 PHP
10 个经典PHP函数
2013/10/17 PHP
使用PHP实现阻止用户上传成人照片或者裸照
2014/12/25 PHP
WIFI万能钥匙密码查询接口实例
2015/09/28 PHP
php 将json格式数据转换成数组的方法
2018/08/21 PHP
Yii框架操作cookie与session的方法实例详解
2019/09/04 PHP
laravel 验证错误信息到 blade模板的方法
2019/09/29 PHP
javascript 三种编解码方式
2010/02/01 Javascript
基于JQuery的cookie插件
2010/04/07 Javascript
使用JQuery和CSS模拟超链接的用户单击事件的实现代码
2012/05/23 Javascript
简略说明Javascript中的= =(等于)与= = =(全等于)区别
2013/04/16 Javascript
基于js实现投票的实例代码
2015/08/04 Javascript
AngularJS进行性能调优的7个建议
2015/12/28 Javascript
BootStrap Table 获取同行不同列元素的方法
2016/12/19 Javascript
angular双向绑定模拟探索
2016/12/26 Javascript
Vue2递归组件实现树形菜单
2017/04/10 Javascript
详解node.js平台下Express的session与cookie模块包的配置
2017/04/26 Javascript
Three.js利用顶点绘制立方体的方法详解
2017/09/27 Javascript
详解React中setState回调函数
2018/06/14 Javascript
vue监听对象及对象属性问题
2018/08/20 Javascript
解决vue.js 数据渲染成功仍报错的问题
2018/08/25 Javascript
js prototype和__proto__的关系是什么
2019/08/23 Javascript
node.js处理前端提交的GET请求
2019/08/30 Javascript
精读《Vue3.0 Function API》
2020/05/20 Javascript
vue实现虚拟列表功能的代码
2020/07/28 Javascript
[03:44]2014DOTA2国际邀请赛 71专访:DK战队赛前讨论视频遭泄露
2014/07/13 DOTA
python获取beautifulphoto随机某图片代码实例
2013/12/18 Python
Python基于更相减损术实现求解最大公约数的方法
2018/04/04 Python
通过shell+python实现企业微信预警
2019/03/07 Python
Pycharm新建模板默认添加个人信息的实例
2019/07/15 Python
Python2.x与3​​.x版本有哪些区别
2020/07/09 Python
Kappa英国官方在线商店:服装和运动器材
2020/11/22 全球购物
高校生生产实习自我鉴定
2013/09/21 职场文书
教师党员批评与自我批评发言稿
2014/10/15 职场文书
公司董事任命书
2015/09/21 职场文书
Redis高可用集群redis-cluster详解
2022/03/20 Redis