自己的js工具 Event封装

因为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();
}
}

(0)

相关推荐

  • 自己的js工具 Event封装

    因为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.clie

  • 自己的js工具 Cookie 封装

    这个时候我们最好是将cookie操作封装起来,便于重用啊 ===================== 复制代码 代码如下: /** 类 Cookie 将此类放入用到的js文件中即可使用 1.add(name,value,100); 添加一个cookie 2.get(name); 3.remove(name); 用例: Cookie.add("sk","ss",3); alert(cookie.get("sk")); Cookie.remove(&

  • 自己的js工具_Form 封装

    复制代码 代码如下: /**Form对象 封装了常用表单操作, Form.isChinese(str);验证str是否为中文 Form.urlEncode(str);url编码 Form.getFormElements(formid); 获取表单的元素数组 最常用的方法 Form.getForm(formid); 获取表单的数据字符串 */ var Form=function(){ //中文 this.isChinese=function(str){ return /[\u4e00-\u9fa5

  • 18个高频使用的JS工具方法总结

    目录 前言 1. 回到顶部 2. 删除数组指定项 3. 获取 url 某一个参数 4. 复制文本 5. 禁止复制文本 6. 复制文本带版权信息 7. 判断数据类型和数据值 8. ua 环境判断 9. 时间格式转换 10. 函数防抖 11. 全屏/退出全屏 12. 禁止打开控制台调试 13. 密码强度展示 14. 五星好评 15. 保留 n 位小数 16. 金额转大写 17. 常用正则判断 18. 解决运算精度丢失的问题 前言 将自己做前端6年以来在项目中使用很高频的工具方法整理了出来,分享一下,

  • vue中mixins的工具的封装方式

    目录 mixins工具的封装 vue的mixins的工具是什么? js工具代码 三.使用这个文件 vue组件封装及注意事项 调用的时候 我们已经会使用 父组件向子组件传数据了,那子组件如何来修改父组件的数据呢? mixins工具的封装 vue的mixins的工具是什么? 就是我们再写信息管理系统时,涉及到大量的增删查改调用后台接口的重复的方法,我们可以把这些方法集合起来直接作为一个js文件,后面可以直接引入,数据和方法都不需要声明,直接使用即可. 再概括一下,就是请求后台接口的方法的集合. js

  • JS类的封装及实现代码

    1. 定义js类 js并不是一种面向对向的语言, 没有提供对类的支持, 因此我们不能像在传统的语言里那样 用class来定义类, 但我们可以利用js的闭包封装机制来实现js类, 我们来封装一个简的Shape类. 复制代码 代码如下: function ShapeBase() { this.show = function() { alert("ShapeBase show"); }; this.init = function(){ alert("ShapeBase init&q

  • JavaScript中cookie工具函数封装的示例代码

    一. 语法 1.1 获取当前页面的所有cookie: var allCookies = document.cookie; allCookies 是一个字符串,其中包含了以分号分隔的cookie列表字符串 (即 key=value 键值对). 1.2 写一个新cookie: document.cookie = updatedCookie; updatedCookie是一个键值对形式的字符串.只能用这个方法一次设置或更新一个cookie,而且写入并不是覆盖,而是添加.例如: document.coo

  • 微信小程序工具函数封装

    本文实例为大家分享了微信小程序工具函数封装的具体代码,供大家参考,具体内容如下 const formatTime = date => { const year = date.getFullYear() const month = date.getMonth() + 1 const day = date.getDate() const hour = date.getHours() const minute = date.getMinutes() const second = date.getSec

  • 关于Jackson的JSON工具类封装 JsonUtils用法

    直接上代码,都有注释,一看就懂,完全满足日常开发需求 import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.Deserializa

  • java8日期工具类封装的实战记录

    目录 前言 在Java 8中如何处理日期和时间 再封装 Java8新增的日期.时间包 总结 前言 java现在应该是更新到16了,想想我当年刚参加工作的时候.普遍还都是java7,那时候没有SpringBoot,没有springCloud,没有我的那个她 哈哈,扯的有点远了,拉回正题 今天我们聊聊java的日期类的一些骚操作 在Java 8中如何处理日期和时间 Java 8 中的 LocalDate 用于表示当天日期.和java.util.Date不同,它只有日期,不包含时间.当你仅需要表示日期

随机推荐