自己的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 相关文章推荐
对 lightbox JS 图片控件进行了一下改造, 使其他支持复杂的图片说明
Mar 20 Javascript
js获取单元格自定义属性值的代码(IE/Firefox)
Apr 05 Javascript
初识javascript 文档碎片
Jul 13 Javascript
浅析showModalDialog数据缓存问题(用禁止浏览器缓存解决)
Jul 09 Javascript
对js中回调函数的一些看法
Aug 29 Javascript
微信小程序 form组件详解
Oct 25 Javascript
vue 运用mock数据的示例代码
Nov 07 Javascript
如何实现双向绑定mvvm的原理实现
May 28 Javascript
js事件触发操作实例分析
Jun 21 Javascript
微信小程序组件传值图示过程详解
Jul 31 Javascript
java和js实现的洗牌小程序
Sep 30 Javascript
AudioContext 实现音频可视化(web技术分享)
Feb 24 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的FTP学习(四)
2006/10/09 PHP
php实现的MySQL通用查询程序
2007/03/11 PHP
解析php中如何直接执行SHELL
2013/06/28 PHP
PHP has encountered a Stack overflow问题解决方法
2014/11/03 PHP
phpQuery采集网页实现代码实例
2020/04/02 PHP
JavaScript 捕获窗口关闭事件
2009/07/26 Javascript
ASP Json Parser修正版
2009/12/06 Javascript
jQuery Jcrop插件实现图片选取功能
2011/11/23 Javascript
精心挑选的12款优秀的基于jQuery的手风琴效果插件和教程
2012/08/22 Javascript
jquery单选框radio绑定click事件实现方法
2015/01/14 Javascript
Javascript基础教程之函数对象和属性
2015/01/18 Javascript
php基于redis处理session的方法
2016/03/14 Javascript
Google 地图获取API Key详细教程
2016/08/06 Javascript
详解JavaScript中js对象与JSON格式字符串的相互转换
2017/02/14 Javascript
关于jquery form表单序列化的注意事项详解
2017/08/01 jQuery
AjaxUpLoad.js实现文件上传功能
2018/03/02 Javascript
js闭包和垃圾回收机制示例详解
2021/03/01 Javascript
Pycharm学习教程(3) 代码运行调试
2017/05/03 Python
浅谈利用numpy对矩阵进行归一化处理的方法
2018/07/11 Python
基于Python对数据shape的常见操作详解
2018/12/25 Python
Python设计模式之抽象工厂模式原理与用法详解
2019/01/15 Python
用python实现刷点击率的示例代码
2019/02/21 Python
谈谈Python中的while循环语句
2019/03/10 Python
详解Python中字符串前“b”,“r”,“u”,“f”的作用
2019/12/18 Python
Python基础之函数原理与应用实例详解
2020/01/03 Python
Python‘==‘ 及 ‘is‘相关原理解析
2020/09/05 Python
Python脚本打包成可执行文件过程解析
2020/10/20 Python
HTML5 Canvas 起步(2) - 路径
2009/05/12 HTML / CSS
将SVG图引入到HTML页面的实现
2019/09/20 HTML / CSS
加拿大领先的牛仔零售商:Bluenotes
2018/01/22 全球购物
万宝龙英国官网:Montblanc手表、书写工具、皮革和珠宝
2018/10/16 全球购物
Desigual美国官方网站:西班牙服装品牌
2019/03/29 全球购物
开普敦通行证:Cape Town Pass
2019/07/18 全球购物
软件配置管理有什么好处
2015/04/15 面试题
制定岗位职责的原则
2013/11/08 职场文书
作风转变年心得体会
2014/10/22 职场文书