js事件处理程序跨浏览器解决方案


Posted in Javascript onMarch 27, 2016

本文实例为大家分享了js事件处理程序跨浏览器解决方案,供大家参考,具体内容如下

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<div>
<input type="button" id="button1" value="按钮" />
</div>
<script type="text/javascript">

function show(){


alert("Hello world!");

}

//声明一个对象

var eventUtil={

//添加句柄


addHandler:function(element,type,handler){

//DOM2级事件处理判断


if(element.addEventListener){



element.addEventListener(type,handler,false);


}else if(element.attachEvent){//IE事件处理判断



element.attachEvent('on'+type,handler);


}else{//DOM0级事件判断



element['on'+type]=handler;


}

},

//删除句柄

removeHandler:function(element,type,handler){

//DOM2级事件处理判断

if(element.removeEventListener){


elememt.removeEventListener(type,handler,false);

}else if(element.detachEvent){//IE事件处理判断


element.detachEvent('on'+type,handler);

}else{//DOM0级事件判断


element['on'+type]=null;


}

}
}

eventUtil.addHandler(button3,'click',show);
</script>

</body>
</html>

再为大家分享js原生事件处理跨浏览器的代码:

//跨浏览器的事件处理器添加方式
var EventUtil = {
  addHandler : function(elem, type, handler){
    if(elem.addEventListener){
      elem.addEventListener(type, handler, false);
    }
    else if(elem.attachEvent){
      elem.attachEvent("on" + type, handler);//添加多个同一类型的handler时,IE方式的规则是最后添加的最先触发
    }
    else{
      if(typeof elem["on" + type] === 'function'){
        var oldHandler = elem["on" + type];
        elem["on" + type] = function(){
          oldHandler();
          handler();
        }
      }
      else{
        elem["on" + type] = handler;//支持添加多个事件处理器
      }
    }
  },

  getEvent : function(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;
    }
  },

  removeHandler : function(elem, type, handler){
    if(elem.removeEventListener){
      elem.removeEventListener(type, handler, false);
    }
    else if(elem.detachEvent){
      elem.detachEvent("on" + type, handler);
    }
    else{
      elem["on" + type] = null;//不支持移除单一事件处理器,只能全部移除
    }
  },

  stopPropagation : function(event){
    if(event.stopPropagation){
      event.stopPropagation();
    }
    else{
      event.cancelBubble = true;
    }
  },

  getRelatedTarget : function(event){
    if(event.relatedTarget){
      return event.relatedTarget;
    }
    else if(event.toElement && event.type == "mouseout"){
      return event.toElement;
    }
    else if(event.fromElement && event.type == "mouseover"){
      return event.fromElement;
    }
    else{
      return null;
    }
  },

  /*IE8点击左键和中键都是0;FF无法识别中键;Chrome正常*/
  getButton : function(event){//返回0,1,2 - 左,中,右
    if(document.implementation.hasFeature("MouseEvents", "2.0")){
      return event.button;
    }
    else{
      switch(event.button){
        case 0:case 1:case 3:case 5:case 7:
          return 0;
          break;
        case 2:case 6:
          return 2;
          break;
        case 4:
          return 1;
          break;
        default:
          break;
      }
    }
  },

  /*只能检测keypress事件,返回值等于将要显示的字符编码*/
  /*IE和Chrome只有能显示的字符键才触发,FF其它键也能触发,返回值为0*/
  getCharCode : function(event){
    if(typeof event.charCode == "number"){
      return event.charCode;
    }
    else{
      return event.keyCode;
    }
  }
};

以上就是本文的全部内容,希望对大家解决js事件处理程序跨浏览器有所帮助。

Javascript 相关文章推荐
asp javascript 实现关闭窗口时保存数据的办法
Nov 24 Javascript
从零开始学习jQuery (三) 管理jQuery包装集
Feb 23 Javascript
Jquery进度条插件 Progress Bar小问题解决
Jul 12 Javascript
jQuery EasyUI API 中文文档 - Panel面板
Sep 30 Javascript
jQuery.query.js 取参数的两点问题分析
Aug 06 Javascript
js中传递特殊字符(+,&amp;)的方法
Jan 16 Javascript
Javascript判断文件是否存在(客户端/服务器端)
Sep 16 Javascript
javascript中parseInt()函数的定义和用法分析
Dec 20 Javascript
Bootstrap按钮组件详解
Apr 26 Javascript
JQuery 在文档中查找指定name的元素并移除的实现方法
May 19 Javascript
AngularJS入门教程之ng-class 指令用法
Aug 01 Javascript
基于模板引擎Jade的应用(详解)
Dec 12 Javascript
基于javascript实现九九乘法表
Mar 27 #Javascript
深入浅析JavaScript中的作用域和上下文
Mar 26 #Javascript
JS中改变this指向的方法(call和apply、bind)
Mar 26 #Javascript
浏览器复制插件zeroclipboard使用指南
Mar 26 #Javascript
jquery中validate与form插件提交的方式小结
Mar 26 #Javascript
javascript实现方法调用与方法触发小结
Mar 26 #Javascript
利用jquery制作滚动到指定位置触发动画
Mar 26 #Javascript
You might like
海贼王动画变成“真人”后,凯多神还原,雷利太帅了!
2020/04/09 日漫
PHP获取当前文件的父目录方法汇总
2016/07/21 PHP
重定向实现代码
2006/11/20 Javascript
Extjs4 GridPanel 的几种样式使用介绍
2013/04/18 Javascript
分享JavaScript获取网页关闭与取消关闭的事件
2013/12/13 Javascript
为开发者准备的10款最好的jQuery日历插件
2014/02/04 Javascript
获取中文字符串的实际长度代码
2014/06/05 Javascript
JavaScript中实现PHP的打乱数组函数shuffle实例
2014/10/11 Javascript
Node.js中安全调用系统命令的方法(避免注入安全漏洞)
2014/12/05 Javascript
jQuery模拟新浪微博首页滚动效果的方法
2015/03/11 Javascript
js中的关联数组与普通数组详解
2016/07/27 Javascript
用js读写cookie的简单方法(推荐)
2016/08/08 Javascript
JS继承之借用构造函数继承和组合继承
2016/09/07 Javascript
js日期相关函数dateAdd,dateDiff,dateFormat等介绍
2016/09/24 Javascript
解决element UI 自定义传参的问题
2018/08/22 Javascript
javascript中toFixed()四舍五入使用方法详解
2018/09/28 Javascript
浅析TypeScript 命名空间
2020/03/19 Javascript
vue2.x 对象劫持的原理实现
2020/04/19 Javascript
jQuery实现视频展示效果
2020/05/30 jQuery
关于Python面向对象编程的知识点总结
2017/02/14 Python
python对日志进行处理的实例代码
2018/10/06 Python
python的xpath获取div标签内html内容,实现innerhtml功能的方法
2019/01/02 Python
Pandas之Fillna填充缺失数据的方法
2019/06/25 Python
Python Django切换MySQL数据库实例详解
2019/07/16 Python
Under Armour美国官网:美国知名高端功能性运动品牌
2016/09/05 全球购物
Merchant 1948澳大利亚:新西兰领先的鞋类和靴子供应商
2018/03/24 全球购物
美国艺术和工艺品商店:Hobby Lobby
2020/12/09 全球购物
opencv实现图像平移效果
2021/03/24 Python
大专生自我评价
2014/01/28 职场文书
结婚周年感言
2014/02/24 职场文书
优秀共产党员先进事迹材料
2014/05/06 职场文书
王力宏牛津大学演讲稿
2014/05/22 职场文书
房屋租赁协议书(标准版)
2014/10/02 职场文书
关于安全的广播稿
2014/10/23 职场文书
小学2016年“我们的节日·重阳节”活动总结
2016/04/01 职场文书
MySQL数据库10秒内插入百万条数据的实现
2021/11/01 MySQL