自己的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 表单验证大全
Nov 23 Javascript
键盘上一张下一张兼容IE/google/firefox等浏览器
Jan 28 Javascript
jQuery实现的导航条切换可显示隐藏
Oct 22 Javascript
常用的JavaScript模板引擎介绍
Feb 28 Javascript
jQuery解决input超多的表单提交
Aug 10 Javascript
JS实现按比例缩放图片的方法(附C#版代码)
Dec 08 Javascript
VC调用javascript的几种方法(推荐)
Aug 09 Javascript
xmlplus组件设计系列之列表(4)
Apr 26 Javascript
vue-cli中的webpack配置详解
Sep 25 Javascript
多个vue子路由文件自动化合并的方法
Sep 03 Javascript
JavaScript闭包原理与用法学习笔记
May 29 Javascript
vue $router和$route的区别详解
Dec 02 Vue.js
自己的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/02 无线电
php5.5中类级别的常量使用介绍
2013/10/02 PHP
php不用正则验证真假身份证
2013/11/06 PHP
php目录遍历函数opendir用法实例
2014/11/20 PHP
php 输入输出流详解及示例代码
2016/08/25 PHP
PHP测试框架PHPUnit组织测试操作示例
2018/05/28 PHP
PHP时间类完整代码实例
2021/02/26 PHP
jquery简单体验
2007/01/10 Javascript
js 页面执行时间计算代码
2009/03/04 Javascript
JQuery+DIV自定义滚动条样式的具体实现
2013/06/25 Javascript
AngularJS ng-style中使用filter
2016/09/21 Javascript
Bootstarp 基础教程之表单部分实例代码
2017/02/03 Javascript
浅谈js中function的参数默认值
2017/02/20 Javascript
vue + socket.io实现一个简易聊天室示例代码
2017/03/06 Javascript
jsonp跨域请求详解
2017/07/13 Javascript
基于node.js的fs核心模块读写文件操作(实例讲解)
2017/09/10 Javascript
基于mpvue的小程序项目搭建的步骤
2018/05/22 Javascript
基于JavaScript实现瀑布流布局
2018/08/15 Javascript
vue-router beforeEach跳转路由验证用户登录状态
2018/12/26 Javascript
微信小程序实现人脸识别登陆的示例代码
2019/04/02 Javascript
vue图片裁剪插件vue-cropper使用方法详解
2020/12/16 Vue.js
用Python实现KNN分类算法
2017/12/22 Python
python实现代码统计器
2019/09/19 Python
python使用opencv实现马赛克效果示例
2019/09/28 Python
IDLE下Python文件编辑和运行操作
2020/04/25 Python
全面解析CSS Media媒体查询使用操作(推荐)
2017/08/15 HTML / CSS
肯尼亚网上商城:Kilimall
2016/08/20 全球购物
西班牙最好的在线购买葡萄酒的商店:Vinoseleccion
2019/10/30 全球购物
个人现实表现材料
2014/02/04 职场文书
年检委托书
2014/08/30 职场文书
就业协议书
2014/09/12 职场文书
合作经营协议书范本
2014/09/16 职场文书
2015欢度元旦标语口号
2014/12/09 职场文书
2015社区精神文明建设工作总结
2015/04/21 职场文书
学生党支部工作总结2015
2015/05/26 职场文书
解决vue $http的get和post请求跨域问题
2021/06/07 Vue.js