JS事件添加和移出的兼容写法示例


Posted in Javascript onJune 20, 2016

本文实例讲述了JS事件添加和移出的兼容写法。分享给大家供大家参考,具体如下:

var EventUtil = {
  addHandler : function (element , type, handler {
     if ( element.addEventListener){
        element.addEventListener(type, handler, false);
      }else if ( element.attachEvent) {
        element.attachEvent("on"+type,handler);
      }else {
         element["on" + type] = handler;
      }
    },
  getEvent : function (event){
      return event ? event : window.event;
     },
   preventDefault : function(event){
      if(event.preventDefault){
         event.preventDefault();
      }else{
         event.returnValue = false;
      }
   },
  removeHandsler : 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] = handler;
     }
    }
   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){
          return event.toElement;
      }else if(event.fromElement){
          return event.fromElement;
      }esle {
          return null;
       }
    },
    getButton : function (event){
       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;
             case 2:
             case 6:
               return 2;
             case 4:
               return 1;
            }
        }
     }
} ;

其中,addHandler 和 removeHandsler 个方法首先都会检测传入的元素中是否存在DOM2级方法.如果存在DOM2级方法,则使用该方法:传入事件类型,事件处理程序函数和第三个参数fasle(表示冒泡阶段). 如果存在的是IE的方法,则采取第二种方案.注意此时的事件类型必须加上"on"前缀.最后一种可能就是使用DOM0级方法(在现代浏览器中,应该不会执行这里的代码). 此时,我们使用的是方括号语法来将属性名指定为事件处理程序,或者将属性设置为null.

可以像下面这样使用EventUtil对象:

var btn = document.getElementById("myBtn");
var handler = function(){
  alert("Clicked");
};
EventUtil.addHandler(btn , "click", handler);
//略去其他代码
EventUtil.removeHandler(btn, "click", handler);

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
js拖动div 当鼠标移动时整个div也相应的移动
Nov 21 Javascript
javascript中Array数组的迭代方法实例分析
Feb 04 Javascript
详解AngularJS的通信机制
Jun 18 Javascript
javascript引用类型之时间Date和数组Array
Aug 27 Javascript
canvas实现流星雨的背景效果
Jan 13 Javascript
js 显示日期时间的实例(时间过一秒加1)
Oct 25 Javascript
Node解决简单重复问题系列之Excel内容的获取
Jan 02 Javascript
angularjs $http调用接口的方式详解
Aug 13 Javascript
微信小程序实现订单倒计时
Nov 01 Javascript
浅谈vue中组件绑定事件时是否加.native
Nov 09 Javascript
vue 路由懒加载中给 Webpack Chunks 命名的方法
Apr 24 Javascript
Vue深入理解插槽slot的使用
Aug 05 Vue.js
Javascript操作表单实例讲解(下)
Jun 20 #Javascript
jQuery获取多种input值的简单实现方法
Jun 20 #Javascript
jQuery图片左右滚动代码 有左右按钮实例
Jun 20 #Javascript
JavaScript操作表单实例讲解(上)
Jun 20 #Javascript
jquery 获取select数组与name数组长度的实现代码
Jun 20 #Javascript
JavaScript提升性能的常用技巧总结【经典】
Jun 20 #Javascript
使用jQuery给input标签设置默认值
Jun 20 #Javascript
You might like
一个PHP日历程序
2006/12/06 PHP
一致性哈希算法以及其PHP实现详细解析
2013/08/24 PHP
PHP PDO数据库操作预处理与注意事项
2019/03/16 PHP
异步javascript的原理和实现技巧介绍
2012/11/08 Javascript
javascript实现英文首字母大写
2015/04/23 Javascript
JS+CSS实现六级网站导航主菜单效果
2015/09/28 Javascript
JavaScript电子时钟倒计时
2016/01/09 Javascript
JavaScript中的操作符类型转换示例总结
2016/05/30 Javascript
Angular2 Service实现简单音乐播放器服务
2017/02/24 Javascript
AngularJS实现表格的增删改查(仅限前端)
2017/07/04 Javascript
JQuery Ajax动态加载Table数据的实例讲解
2018/08/09 jQuery
vue 解决setTimeOut和setInterval函数无效报错的问题
2020/07/30 Javascript
JS如何监听div的resize事件详解
2020/12/03 Javascript
jquery自定义组件实例详解
2020/12/31 jQuery
初学Python函数的笔记整理
2015/04/07 Python
简单介绍Python中的JSON模块
2015/04/08 Python
python数据结构之图深度优先和广度优先实例详解
2015/07/08 Python
编写自定义的Django模板加载器的简单示例
2015/07/21 Python
利用Python-iGraph如何绘制贴吧/微博的好友关系图详解
2017/11/02 Python
python使用knn实现特征向量分类
2018/12/26 Python
python3+PyQt5 创建多线程网络应用-TCP客户端和TCP服务器实例
2019/06/17 Python
Python实现不规则图形填充的思路
2020/02/02 Python
CSS3中的Media Queries学习笔记
2016/05/23 HTML / CSS
html5拖拽应用记录及注意点
2020/05/27 HTML / CSS
手工制作的豪华英式沙发和沙发床:Willow & Hall
2019/05/03 全球购物
美国气象仪器、花园装饰和墙壁艺术商店:Wind & Weather
2019/05/29 全球购物
PHP中如何使用Cookie
2015/10/28 面试题
js实现弹框效果
2021/03/24 Javascript
出纳年终工作总结2014
2014/12/05 职场文书
民间借贷借条如何写
2015/05/26 职场文书
心灵点滴观后感
2015/06/02 职场文书
保姆聘用合同
2015/09/21 职场文书
创业计划书之家教托管
2019/09/25 职场文书
JavaScript+HTML实现学生信息管理系统
2021/04/20 Javascript
在Django中使用MQTT的方法
2021/05/10 Python
在js中修改html body的样式
2021/11/11 Javascript