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 相关文章推荐
javascript判断机器是否联网的2种方法
Aug 09 Javascript
更高效的使用JQuery 这里总结了8个小技巧
Apr 13 Javascript
Bootstrap3 input输入框插入glyphicon图标的方法
May 16 Javascript
深入理解ECMAScript的几个关键语句
Jun 01 Javascript
js鼠标移动时禁止选中文字
Feb 19 Javascript
js移动端事件基础及常用事件库详解
Aug 15 Javascript
详解JS函数stack size计算方法
Jun 18 Javascript
详解SPA中前端路由基本原理与实现方式
Sep 12 Javascript
vue-cli 3.x 配置Axios(proxyTable)跨域代理方法
Sep 19 Javascript
JS中async/await实现异步调用的方法
Aug 28 Javascript
浅谈vue异步数据影响页面渲染
Oct 29 Javascript
vue+iview实现分页及查询功能
Nov 17 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 三维饼图的实现代码
2008/09/28 PHP
PHP中copy on write写时复制机制介绍
2014/05/13 PHP
Eclipse的PHP插件PHPEclipse安装和使用
2014/07/20 PHP
PHP数组和explode函数示例总结
2015/05/08 PHP
Thinkphp单字母函数使用指南
2016/05/08 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
2017/07/19 PHP
PHP PDOStatement::execute讲解
2019/01/31 PHP
PHP SESSION机制的理解与实例
2019/03/22 PHP
jquery判断单个复选框是否被选中的代码
2009/09/03 Javascript
禁止JQuery中的load方法装载IE缓存中文件的方法
2009/09/11 Javascript
根据对象的某一属性进行排序的js代码(如:name,age)
2010/08/10 Javascript
基于jQuery的淡入淡出可自动切换的幻灯插件
2010/08/24 Javascript
jquery 合并内容相同的单元格(示例代码)
2013/12/13 Javascript
AngularJS基础教程之简单介绍
2015/09/27 Javascript
jquery实现简洁文件上传表单样式
2015/11/02 Javascript
一个字符串中出现次数最多的字符 统计这个次数【实现代码】
2016/04/29 Javascript
简单掌握JavaScript中const声明常量与变量的用法
2016/05/21 Javascript
JS组件Bootstrap Table布局详解
2016/05/27 Javascript
深入理解JS中的Function.prototype.bind()方法
2016/10/11 Javascript
滚动条的监听与内容随着滚动条动态加载的实现
2017/02/08 Javascript
js技巧之十几行的代码实现vue.watch代码
2018/06/09 Javascript
在Express中提供静态文件的实现方法
2019/10/17 Javascript
js实现小星星游戏
2020/03/23 Javascript
解决vue+webpack项目接口跨域出现的问题
2020/08/10 Javascript
python 多线程应用介绍
2012/12/19 Python
python实现自动发送邮件发送多人、群发、多附件的示例
2018/01/23 Python
python 使用raw socket进行TCP SYN扫描实例
2020/05/05 Python
Tensorflow加载Vgg预训练模型操作
2020/05/26 Python
pytorch简介
2020/11/11 Python
html2canvas生成清晰的图片实现打印的示例代码
2019/09/30 HTML / CSS
NFL官方在线商店:NFLShop
2020/07/29 全球购物
常务副总经理岗位职责
2014/04/12 职场文书
小学生迎国庆演讲稿
2014/09/05 职场文书
离职信范文
2015/06/23 职场文书
评测 | 大屏显示带收音机的高端音箱,JBL TUNE2便携式插卡音箱实测
2021/04/24 无线电
Vue3.0写自定义指令的简单步骤记录
2021/06/27 Vue.js