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面向对象之二 命名空间
Feb 08 Javascript
javascript 拖动表格行实现代码
May 05 Javascript
JavaScript实现x秒后自动跳转到一个页面
Jan 03 Javascript
JS 去前后空格大全(IE9亲测)
Jul 15 Javascript
javascript实现十六进制颜色值(HEX)和RGB格式相互转换
Jun 20 Javascript
JavaScript简介
Feb 15 Javascript
jQuery动画显示和隐藏效果实例演示(附demo源码下载)
Dec 31 Javascript
jQuery EasyUI常用数据验证汇总
Sep 18 Javascript
Node.js中 __dirname 的使用介绍
Jun 19 Javascript
关于jQuery里prev()的简单操作代码
Oct 27 jQuery
使用vue2实现带地区编号和名称的省市县三级联动效果
Nov 05 Javascript
Vue 中使用富文本编译器wangEditor3的方法
Sep 26 Javascript
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
将兴奋、喜悦和坎加斯带到戴安娜:亚马逊公主
2020/03/03 欧美动漫
一些php技巧与注意事项分析
2011/02/03 PHP
PHP-CGI进程CPU 100% 与 file_get_contents 函数的关系分析
2011/08/15 PHP
windows下zendframework项目环境搭建(通过命令行配置)
2012/12/06 PHP
ThinkPHP3.1新特性之内容解析输出详解
2014/06/19 PHP
PHP实现的多彩标签效果代码分享
2014/08/21 PHP
php获取远程图片并下载保存到本地的方法分析
2016/10/08 PHP
PHP如何获取当前主机、域名、网址、路径、端口等参数
2017/06/09 PHP
使用laravel和ajax实现整个页面无刷新的操作方法
2019/10/03 PHP
javascript textarea光标定位方法(兼容IE和FF)
2011/03/12 Javascript
用JavaScript获取DOM元素位置和尺寸大小的方法
2013/04/12 Javascript
jQuery+css实现百度百科的页面导航效果
2014/12/16 Javascript
JavaScript中使用Math.PI圆周率属性的方法
2015/06/14 Javascript
14款经典网页图片和文字特效的jQuery插件-前端开发必备
2015/08/25 Javascript
NodeJS、NPM安装配置步骤(windows版本) 以及环境变量详解
2017/05/13 NodeJs
Angularjs上传图片实例详解
2017/08/06 Javascript
基于vue的短信验证码倒计时demo
2017/09/13 Javascript
Vue.js在数组中插入重复数据的实现代码
2017/11/17 Javascript
vue3.0 加载json的方法(非ajax)
2020/10/26 Javascript
Python中返回字典键的值的values()方法使用
2015/05/22 Python
Python的Django框架中模板碎片缓存简介
2015/07/24 Python
深入浅析Python的类
2018/06/22 Python
详解Python中正则匹配TAB及空格的小技巧
2019/07/26 Python
python plt可视化——打印特殊符号和制作图例代码
2020/04/17 Python
Python drop方法删除列之inplace参数实例
2020/06/27 Python
Django中和时区相关的安全问题详解
2020/10/12 Python
Jogun Shop中文官网:韩国知名时尚男装网站
2016/10/12 全球购物
瑜伽服装品牌:露露柠檬(lululemon athletica)
2017/06/04 全球购物
Java里面Pass by value和Pass by Reference是什么意思
2016/05/02 面试题
汽车技术服务与营销专业在籍生自荐信
2013/09/28 职场文书
银行自荐信范文
2013/10/07 职场文书
年度考核自我鉴定
2014/02/02 职场文书
个人存款证明书
2014/10/18 职场文书
公司感谢信范文
2015/01/22 职场文书
治理商业贿赂工作总结
2015/08/10 职场文书
学生会部长竞选稿
2015/11/19 职场文书