博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript跨浏览器处理事件以及相关对象
阅读量:7011 次
发布时间:2019-06-28

本文共 2653 字,大约阅读时间需要 8 分钟。

  主流的浏览器和IE浏览器在处理事件和事件对象上是有所区别的,我们一般会通过EventUtil进行封装,这样,就可以正常的跨浏览器处理事件了,本文的主要内容总结自《JavaScript高级程序设计3》。 

  

var EventUtil={       addHandler:function(element,type,handler){ //添加事件      if(element.addEventListener){          element.addEventListener(type,handler,false);  //使用DOM2级方法添加事件      }else if(element.attachEvent){                    //使用IE方法添加事件         element.attachEvent("on"+type,handler);      }else{         element["on"+type]=handler;          //使用DOM0级方法添加事件      }   },     removeHandler:function(element,type,handler){  //取消事件      if(element.removeEventListener){         element.removeEventListener(type,handler,false);      }else if(element.detachEvent){         element.detachEvent("on"+type,handler);      }else{         element["on"+type]=null;      }   },   getEvent:function(event){  //使用这个方法跨浏览器取得event对象      return event?event:window.event;   },       getTarget:function(event){  //返回事件的实际目标      return event.target||event.srcElement;   },       preventDefault:function(event){   //阻止事件的默认行为      if(event.preventDefault){         event.preventDefault();       }else{         event.returnValue=false;      }   },   stopPropagation:function(event){  //立即停止事件在DOM中的传播                                     //避免触发注册在document.body上面的事件处理程序      if(event.stopPropagation){         event.stopPropagation();      }else{         event.cancelBubble=true;      }   },           getRelatedTarget:function(event){  //获取mouseover和mouseout相关元素      if(event.relatedTarget){         return event.relatedTarget;      }else if(event.toElement){      //兼容IE8-         return event.toElement;      }else if(event.formElement){         return event.formElement;      }else{         return null;      }   },           getButton:function(event){    //获取mousedown或mouseup按下或释放的按钮是鼠标中的哪一个      if(document.implementation.hasFeature("MouseEvents","2.0")){         return event.button;      }else{         switch(event.button){   //将IE模型下的button属性映射为DOM模型下的button属性            case 0:            case 1:            case 3:            case 5:            case 7:               return 0;  //按下的是鼠标主按钮(一般是左键)            case 2:            case 6:               return 2;  //按下的是中间的鼠标按钮            case 4:               return 1;  //鼠标次按钮(一般是右键)         }      }   },           getWheelDelta:function(event){ //获取表示鼠标滚轮滚动方向的数值      if(event.wheelDelta){         return event.wheelDelta;      }else{         return -event.detail*40;      }   },           getCharCode:function(event){   //以跨浏览器取得相同的字符编码,需在keypress事件中使用      if(typeof event.charCode=="number"){         return event.charCode;      }else{         return event.keyCode;      }   }        };

 

以上。 

转载地址:http://lrttl.baihongyu.com/

你可能感兴趣的文章
【Spark Summit East 2017】不必犹豫,使用Spark 2.0结构化流
查看>>
三十分钟学会SED
查看>>
HTTPFS: 基于HTTP操作hadoop hdfs文件系统
查看>>
使用jquery获取父元素或父节点的方法
查看>>
如何让双十一数据大屏讲出故事?设计有口诀
查看>>
浮窗系列之窗口与用户输入系统
查看>>
swing效果点击下拉框自动填充文本框
查看>>
UML之活动图
查看>>
[收藏学习]安全性相关
查看>>
测来测去,感觉REQUESTS最实在
查看>>
powershell 模拟IE行为
查看>>
细说ES7 JavaScript Decorators
查看>>
最好的团队
查看>>
Objective-C之@类别小实例
查看>>
IOS的唯一标识符问题(转)
查看>>
【Oracle】How to Rename or Move Datafiles and Logfiles 之一
查看>>
CYQ.Data 轻量数据访问层(六) 构造数据表
查看>>
iOS系统声音列表
查看>>
Linux0.11内核剖析--初始化程序(init)
查看>>
大数据网红发现神器
查看>>