自己的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 相关文章推荐
通过jquery的$.getJSON做一个跨域ajax请求试验
May 03 Javascript
疯狂Jquery第一天(Jquery学习笔记)
May 11 Javascript
jQuery 全选/反选以及单击行改变背景色实例
Jul 02 Javascript
jquery做的一个简单的屏幕锁定提示框
Mar 26 Javascript
jquery实现textarea 高度自适应
Mar 11 Javascript
jquery中map函数遍历数组用法实例
May 18 Javascript
javascript同步服务器时间和同步倒计时小技巧
Sep 24 Javascript
jQuery插件之jQuery.Form.js用法实例分析(附demo示例源码)
Jan 04 Javascript
借助node实战JSONP跨域实例
Mar 30 Javascript
vue实现百度搜索下拉提示功能实例
Jun 14 Javascript
深入了解javascript 数组的sort方法
Jun 01 Javascript
解决Vue-cli3没有vue.config.js文件夹及配置vue项目域名的问题
Dec 04 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
将一维或多维的数组连接成一个字符串的php代码
2010/08/08 PHP
PHP中设置一个严格30分钟过期Session面试题的4种答案
2014/07/30 PHP
PHP将字符分解为多个字符串的方法
2014/11/22 PHP
PHP编程文件处理类SplFileObject和SplFileInfo用法实例分析
2017/07/22 PHP
laravel框架数据库配置及操作数据库示例
2019/10/10 PHP
Laravel 前端资源配置教程
2019/10/18 PHP
Dojo 学习笔记入门篇 First Dojo Example
2009/11/15 Javascript
javascrpt绑定事件之匿名函数无法解除绑定问题
2012/12/06 Javascript
使用Promise解决多层异步调用的简单学习心得
2016/05/17 Javascript
AngularJS 实现JavaScript 动画效果详解
2016/09/08 Javascript
JS中Array数组学习总结
2017/01/18 Javascript
AngularJS的脏检查深入分析
2017/04/22 Javascript
简单实现JavaScript弹幕效果
2020/08/27 Javascript
基于Vue单文件组件详解
2017/09/15 Javascript
最新Javascript程序员面试试题和解题方法
2017/11/23 Javascript
Vue监听一个数组id是否与另一个数组id相同的方法
2018/09/26 Javascript
微信小程序局部刷新触发整页刷新效果的实现代码
2018/11/21 Javascript
Vue实现本地购物车功能
2018/12/05 Javascript
JS继承实现方法及优缺点详解
2020/09/02 Javascript
K-means聚类算法介绍与利用python实现的代码示例
2017/11/13 Python
selenium python浏览器多窗口处理代码示例
2018/01/15 Python
Python3数据库操作包pymysql的操作方法
2018/07/16 Python
django使用LDAP验证的方法示例
2018/12/10 Python
Python设计模式之装饰模式实例详解
2019/01/21 Python
python生成器推导式用法简单示例
2019/10/08 Python
CSS3 @font-face属性使用指南
2014/12/12 HTML / CSS
美国益智玩具购物网站:Fat Brain Toys
2017/11/03 全球购物
学院领导推荐信
2013/10/30 职场文书
中学生演讲稿
2014/04/26 职场文书
艺术设计专业毕业生推荐信
2014/07/08 职场文书
2014年向国旗敬礼活动总结
2014/09/27 职场文书
2014年村支部书记四风对照检查材料思想汇报
2014/10/02 职场文书
领导批评与自我批评范文
2014/10/16 职场文书
手机销售员岗位职责
2015/04/11 职场文书
学会Python数据可视化必须尝试这7个库
2021/06/16 Python
zabbix自定义监控nginx状态实现过程
2021/11/01 Servers