自己的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中Math对象方法使用概述
Jan 02 Javascript
基于Jquery实现键盘按键监听
May 11 Javascript
JS利用cookie记忆当前位置的防刷新导航效果
Oct 15 Javascript
jQuery ajax分页插件实例代码
Jan 27 Javascript
jquery点击展示与隐藏更多内容
Dec 03 Javascript
js遮罩效果制作弹出注册界面效果
Jan 25 Javascript
详解数组Array.sort()排序的方法
May 09 Javascript
关于jQuery EasyUI 中刷新Tab选项卡后一个页面变形的解决方法
Mar 02 Javascript
Angular路由ui-router配置详解
Aug 01 Javascript
手把手教你写一个微信小程序(推荐)
Oct 17 Javascript
Bootstrap4 gulp 配置详解
Jan 06 Javascript
Vue使用axios引起的后台session不同操作
Aug 14 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
Optimizer与Debugger兼容性问题的解决方法
2008/12/01 PHP
为IP查询添加GOOGLE地图功能的代码
2010/08/08 PHP
PHP ElasticSearch做搜索实例讲解
2020/02/05 PHP
javascript cookies 设置、读取、删除实例代码
2010/04/12 Javascript
jQuery学习笔记(2)--用jquery实现各种模态提示框代码及项目构架
2013/04/08 Javascript
jquery用get实现ajax在ie里面刷新不进入后台解决方法
2013/08/12 Javascript
IE的事件传递-event.cancelBubble示例介绍
2014/01/12 Javascript
Jquery中find与each方法用法实例
2015/02/04 Javascript
JQuery移动页面开发之屏幕方向改变与滚屏的实现
2015/12/03 Javascript
详细分析Javascript中创建对象的四种方式
2016/08/17 Javascript
swiper在angularjs中使用循环轮播失效的解决方法
2018/09/27 Javascript
nodejs 递归拷贝、读取目录下所有文件和目录
2019/07/18 NodeJs
浅谈JavaScript中你可能不知道URL构造函数的属性
2020/07/13 Javascript
vue flex 布局实现div均分自动换行的示例代码
2020/08/05 Javascript
解决vue单页面应用打包后相对路径、绝对路径相关问题
2020/08/14 Javascript
[03:14]DOTA2斧王 英雄基础教程
2013/11/26 DOTA
Python之os操作方法(详解)
2017/06/15 Python
python数据结构之链表的实例讲解
2017/07/25 Python
python使用多线程编写tcp客户端程序
2019/09/02 Python
python 使用while写猜年龄小游戏过程解析
2019/10/07 Python
python Plotly绘图工具的简单使用
2020/03/03 Python
python 浮点数四舍五入需要注意的地方
2020/08/18 Python
详解向scrapy中的spider传递参数的几种方法(2种)
2020/09/28 Python
python Matplotlib数据可视化(1):简单入门
2020/09/30 Python
使用CSS3编写类似iOS中的复选框及带开关的按钮
2016/04/11 HTML / CSS
input元素的url类型和email类型简介
2012/07/11 HTML / CSS
C有"按引用传递"吗
2016/09/06 面试题
管理站站长岗位职责
2013/11/27 职场文书
地球一小时倡议书
2014/04/15 职场文书
交通文明倡议书
2014/05/16 职场文书
校运动会广播稿(100篇)
2014/09/12 职场文书
2014年图书室工作总结
2014/12/09 职场文书
演讲开场白台词大全
2015/05/29 职场文书
2015年中学总务处工作总结
2015/07/22 职场文书
2015年高中语文教学总结
2015/08/18 职场文书
python关于集合的知识案例详解
2021/05/30 Python