自己的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聚焦于第一个字段的代码
Oct 15 Javascript
去掉gridPanel表头全选框的小例子
Jul 18 Javascript
javascript操作表格排序实例分析
May 06 Javascript
jQuery 的 ready()的纯js替代方法
Nov 20 Javascript
一道面试题引发的对javascript类型转换的思考
Mar 06 Javascript
Vue微信项目按需授权登录策略实践思路详解
May 07 Javascript
安装Node.js并启动本地服务的操作教程
May 12 Javascript
JavaScript创建防篡改对象的方法分析
Dec 30 Javascript
vuex实现及简略解析(小结)
Mar 01 Javascript
解决layer.open后laydate失效的问题
Sep 06 Javascript
Vue.extend 编程式插入组件的实现
Nov 18 Javascript
ng-alain的sf如何自定义部件的流程
Jun 12 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列出一个目录下的所有文件的代码
2012/10/09 PHP
php中用加号与用array_merge合并数组的区别深入分析
2013/06/03 PHP
thinkphp四种url访问方式详解
2014/11/28 PHP
PHP中的命名空间相关概念浅析
2015/01/22 PHP
laravel 输出最后执行sql 附:whereIn的使用方法
2019/10/10 PHP
使用git迁移Laravel项目至新开发环境的步骤详解
2020/04/06 PHP
JavaScript实现禁止后退的方法
2006/12/27 Javascript
从盛大通行证上摘下来的身份证验证js代码
2011/01/11 Javascript
jQuery获取注册信息并提示实现代码
2013/04/21 Javascript
2种jQuery 实现刮刮卡效果
2015/02/01 Javascript
关于input全选反选恶心的异常情况
2016/07/24 Javascript
setTimeout学习小结
2017/02/08 Javascript
js实现滑动到页面底部自动加载更多功能
2017/02/15 Javascript
微信小程序 template模板详解及实例代码
2017/03/09 Javascript
jQuery实现分页功能(含ajax请求、后台数据、附完整demo)
2017/04/03 jQuery
Angular4项目中添加i18n国际化插件ngx-translate的步骤详解
2017/07/02 Javascript
详谈js对url进行编码和解码(三种方式的区别)
2017/08/16 Javascript
JS判断两个数组或对象是否相同的方法示例
2019/02/28 Javascript
vue制作抓娃娃机的示例代码
2020/04/17 Javascript
VUE项目axios请求头更改Content-Type操作
2020/07/24 Javascript
nodejs中内置模块fs,path常见的用法说明
2020/11/07 NodeJs
原生js实现自定义难度的扫雷游戏
2021/01/22 Javascript
在Django中创建动态视图的教程
2015/07/15 Python
Python迭代器定义与简单用法分析
2018/04/30 Python
在pyqt5中QLineEdit里面的内容回车发送的实例
2019/06/21 Python
树莓派动作捕捉抓拍存储图像脚本
2019/06/22 Python
Python批量修改图片分辨率的实例代码
2019/07/04 Python
pyqt5 QScrollArea设置在自定义侧(任何位置)
2019/09/25 Python
python实现梯度下降和逻辑回归
2020/03/24 Python
Boda Skins皮衣官网:奢侈皮夹克,全球配送
2016/12/15 全球购物
贷款委托书范本
2014/04/08 职场文书
学生评语大全
2014/04/18 职场文书
会计简历自我评价
2015/03/10 职场文书
大学生个人简历自我评价
2015/03/11 职场文书
导游词之南京中山陵
2019/11/27 职场文书
Python图像处理之图像拼接
2021/04/28 Python