自己的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类定义例子
Sep 12 Javascript
基于jquery的滚动条滚动固定div(附演示下载)
Oct 29 Javascript
js使用正则实现ReplaceAll全部替换的方法
Jul 18 Javascript
JavaScript中实现依赖注入的思路分享
Jan 15 Javascript
JavaScript将数组转换成CSV格式的方法
Mar 19 Javascript
Jquery效果大全之制作电脑健康体检得分特效附源码下载
Nov 02 Javascript
如何利用AngularJS打造一款简单Web应用
Dec 05 Javascript
vue项目中引入noVNC远程桌面的方法
Mar 05 Javascript
webpack 如何同时输出压缩和未压缩的文件的实现步骤
Jun 05 Javascript
微信小程序实现多行文字滚动
Nov 18 Javascript
浅析vue中的nextTick
Dec 28 Vue.js
javascript canvas实现雨滴效果
Jun 09 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
咖啡产品发展的三大浪潮
2021/03/04 咖啡文化
解析php中如何调用用户自定义函数
2013/08/06 PHP
Laravel 5框架学习之环境与配置
2015/04/08 PHP
PHP实现恶意DDOS攻击避免带宽占用问题方法
2015/05/27 PHP
PHP限制HTML内容中图片必须是本站的方法
2015/06/16 PHP
php源码 fsockopen获取网页内容实例详解
2016/09/24 PHP
php与阿里云短信接口接入操作案例分析
2020/05/27 PHP
JavaScript获取GridView选择的行内容
2009/04/14 Javascript
用JS判断IE版本的代码 超管用!
2011/08/09 Javascript
点击隐藏页面左栏或右栏实现js代码
2013/04/01 Javascript
基于jquery实现一张图片点击鼠标放大再点缩小
2013/09/29 Javascript
鼠标拖拽移动子窗体的JS实现
2014/02/25 Javascript
JSONP跨域的原理解析及其实现介绍
2014/03/22 Javascript
JavaScript调试工具汇总
2014/12/23 Javascript
jQuery制作简单柱状图实例
2015/01/28 Javascript
JavaScript获取表格(table)当前行的值、删除行、增加行
2015/07/03 Javascript
当jquery ajax遇上401请求的解决方法
2016/05/19 Javascript
Javascript 闭包详解及实例代码
2016/11/30 Javascript
详解React-Router中Url参数改变页面不刷新的解决办法
2018/05/08 Javascript
vue实现组件之间传值功能示例
2018/07/13 Javascript
解决angular2 获取到的数据无法实时更新的问题
2018/08/31 Javascript
基于Express框架使用POST传递Form数据
2019/08/10 Javascript
深入浅析JavaScript中的in关键字和for-in循环
2020/04/20 Javascript
python实现字符串和日期相互转换的方法
2015/05/13 Python
Python中遍历字典过程中更改元素导致异常的解决方法
2016/05/12 Python
python中将zip压缩包转为gz.tar的方法
2018/10/18 Python
Python列表(List)知识点总结
2019/02/18 Python
Python自动抢红包教程详解
2019/06/11 Python
python GUI库图形界面开发之PyQt5切换按钮控件QPushButton详细使用方法与实例
2020/02/28 Python
python实现从ftp服务器下载文件
2020/03/03 Python
HTML5打开手机扫码功能及优缺点
2017/11/27 HTML / CSS
微信html5页面调用第三方位置导航的示例
2018/03/14 HTML / CSS
水产养殖学应届生求职信
2013/09/29 职场文书
批评与自我批评总结
2014/10/17 职场文书
英语演讲开场白
2015/05/29 职场文书
关于Python中进度条的六个实用技巧分享
2022/04/05 Python