自己的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 相关文章推荐
页面右下角弹出提示框示例代码js版
Aug 02 Javascript
jQuery 1.9.1源码分析系列(十五)之动画处理
Dec 03 Javascript
jQuery用户头像裁剪插件cropbox.js使用详解
Jun 07 jQuery
JQuery EasyUI 结合ztrIee的后台页面开发实例
Sep 01 jQuery
JavaScrip数组删除特定元素的几种方法总结
Sep 06 Javascript
angular4实现tab栏切换的方法示例
Oct 21 Javascript
vue 挂载路由到头部导航的方法
Nov 13 Javascript
解决vue处理axios post请求传参的问题
Mar 05 Javascript
element-ui 设置菜单栏展开的方法
Aug 22 Javascript
详解vue更改头像功能实现
Apr 28 Javascript
javascript设计模式 ? 策略模式原理与用法实例分析
Apr 21 Javascript
微信小程序实现打卡签到页面
Sep 21 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 foreach 使用&(与运算符)引用赋值要注意的问题
2010/02/16 PHP
xml在joomla表单中的应用详解分享
2012/07/19 PHP
php中字符查找函数strpos、strrchr与strpbrk用法
2014/11/18 PHP
PHP中实现Bloom Filter算法
2015/03/30 PHP
php基于curl扩展制作跨平台的restfule 接口
2015/05/11 PHP
ThinkPHP进程计数类Process用法实例详解
2015/09/25 PHP
php无限级分类实现方法分析
2016/10/19 PHP
Yii框架小部件(Widgets)用法实例详解
2020/05/15 PHP
Javascript var变量隐式声明方法
2009/10/19 Javascript
javascript 基础篇3 类,回调函数,内置对象,事件处理
2012/03/14 Javascript
jquery slibings选取同级其他元素的实现代码
2013/11/15 Javascript
快速学习jQuery插件 Form表单插件使用方法
2015/12/01 Javascript
老生常谈js中的MVC
2017/07/25 Javascript
基于bootstrap写的一点localStorage本地储存
2017/11/21 Javascript
vue在使用ECharts时的异步更新和数据加载详解
2017/11/22 Javascript
node之本地服务器图片上传的方法示例
2019/03/26 Javascript
javascript使用substring实现的展开与收缩文字功能示例
2019/06/17 Javascript
node.js使用yargs处理命令行参数操作示例
2020/02/11 Javascript
Vue列表循环从指定下标开始的多种解决方案
2020/04/08 Javascript
js实现九宫格布局效果
2020/05/28 Javascript
JavaScript 常见的继承方式汇总
2020/09/17 Javascript
linux服务器快速卸载安装node环境(简单上手)
2021/02/22 Javascript
在python下使用tensorflow判断是否存在文件夹的实例
2019/06/10 Python
如何实现Django Rest framework版本控制
2019/07/25 Python
CSS3 3D位移translate效果实例介绍
2016/05/03 HTML / CSS
英国银首饰公司:e&e Jewellery
2021/02/11 全球购物
医学院校毕业生自荐信范文
2014/01/01 职场文书
预备党员2014全国两会学习心得体会
2014/03/10 职场文书
经贸日语专业个人求职信范文
2014/04/29 职场文书
公司周年庆典策划方案
2014/05/17 职场文书
局领导领导班子四风对照检查材料
2014/09/27 职场文书
2014年班组建设工作总结
2014/12/01 职场文书
2015教师个人工作总结范文
2015/03/31 职场文书
2015年大学教师工作总结
2015/05/20 职场文书
员工升职自我评价
2019/03/26 职场文书
剖析后OpLog订阅MongoDB的数据变更就没那么难了
2022/02/24 MongoDB