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 参考教程
Dec 29 Javascript
firefox浏览器下javascript 拖动层效果与原理分析代码
Dec 04 Javascript
用js实现输入提示(自动完成)的实例代码
Jun 14 Javascript
Jquery+asp.net后台数据传到前台js进行解析的方法
May 11 Javascript
leaflet的开发入门教程
Nov 17 Javascript
JavaScript数据类型和变量_动力节点Java学院整理
Jun 26 Javascript
Vue学习笔记进阶篇之过渡状态详解
Jul 14 Javascript
Vue组件实例间的直接访问实现代码
Aug 20 Javascript
vue语法之拼接字符串的示例代码
Oct 25 Javascript
JS实现统计字符串中字符出现个数及最大个数功能示例
Jun 04 Javascript
webpack 3.X学习之多页面打包的方法
Sep 04 Javascript
jquery实现图片放大镜效果
Dec 23 jQuery
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 一元分词算法
2009/11/30 PHP
浅析PHP substr,mb_substr以及mb_strcut的区别和用法
2013/06/21 PHP
ThinkPHP跳转页success及error模板实例教程
2014/07/17 PHP
JQuery优缺点分析说明
2010/06/09 Javascript
asp.net+jquery滚动滚动条加载数据的下拉控件
2010/06/25 Javascript
Web Inspector:关于在 Sublime Text 中调试Js的介绍
2013/04/18 Javascript
Js判断参数(String,Array,Object)是否为undefined或者值为空
2013/11/04 Javascript
按下回车键指向下一个位置的一个函数代码
2014/03/10 Javascript
js的image onload事件使用遇到的问题
2014/07/15 Javascript
简单介绍jsonp 使用小结
2016/01/27 Javascript
原生js实现addclass,removeclass,toggleclasss实例
2016/11/24 Javascript
vue render函数动态加载img的src路径操作
2020/10/26 Javascript
[47:52]DOTA2-DPC中国联赛正赛 iG vs LBZS BO3 第二场 3月4日
2021/03/11 DOTA
Python使用新浪微博API发送微博的例子
2014/04/10 Python
Python里disconnect UDP套接字的方法
2015/04/23 Python
Python中常用信号signal类型实例
2018/01/25 Python
为什么选择python编程语言入门黑客攻防 给你几个理由!
2018/02/02 Python
python smtplib模块自动收发邮件功能(一)
2018/05/22 Python
python UDP(udp)协议发送和接收的实例
2019/07/22 Python
python实现美团订单推送到测试环境,提供便利操作示例
2019/08/09 Python
python爬虫 2019中国好声音评论爬取过程解析
2019/08/26 Python
python模拟点击网页按钮实现方法
2020/02/25 Python
Python各种扩展名区别点整理
2020/02/27 Python
pytorch实现查看当前学习率
2020/06/24 Python
python中数字是否为可变类型
2020/07/08 Python
Scrapy爬虫文件批量运行的实现
2020/09/30 Python
python中实现栈的三种方法
2020/12/19 Python
python 列表推导和生成器表达式的使用
2021/02/01 Python
英国美发和美容产品商城:HQhair
2019/02/08 全球购物
幼儿园教师奖惩制度
2014/02/01 职场文书
总裁助理岗位职责
2014/02/17 职场文书
教师作风整改措施思想汇报
2014/10/12 职场文书
服务员岗位职责
2015/02/03 职场文书
2015年政协委员工作总结
2015/05/20 职场文书
mysql优化
2021/04/06 MySQL
MySQL 主从复制数据不一致的解决方法
2022/03/18 MySQL