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内存泄露的几种情况详细探讨
May 31 Javascript
关于Javascript与iframe的那些事儿
Jul 04 Javascript
原生js和jQuery随意改变div属性style的名称和值
Oct 22 Javascript
jQuery实现鼠标滑向当前图片高亮显示并且其它图片变灰的方法
Jul 27 Javascript
JavaScript实现的浮动层框架用法实例分析
Oct 10 Javascript
Three.js快速入门教程
Sep 09 Javascript
js中用cssText设置css样式的简单方法
Sep 19 Javascript
Angular中使用ui router实现系统权限控制及开发遇到问题
Sep 23 Javascript
Angular简单验证功能示例
Dec 22 Javascript
JavaScript数组基于交换的排序示例【冒泡排序】
Jul 21 Javascript
利用JavaScript模拟京东按键输入功能
Dec 01 Javascript
react项目从新建到部署的实现示例
Feb 19 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
escape unescape的php下的实现方法
2007/04/27 PHP
用windows下编译过的eAccelerator for PHP 5.1.6实现php加速的使用方法
2007/09/30 PHP
PHP写的加密函数,支持私人密钥(详细介绍)
2013/06/09 PHP
wordpress安装过程中遇到中文乱码的处理方法
2015/04/21 PHP
PHP开发中解决并发问题的几种实现方法分析
2017/11/13 PHP
jQuery 浮动广告实现代码
2008/12/25 Javascript
JavaScript 函数调用规则
2009/09/14 Javascript
js 编码转换 gb2312 和 utf8 互转的2种方法
2013/08/07 Javascript
在ASP.NET中使用JavaScript脚本的方法
2013/11/12 Javascript
jQuery同步提交示例代码
2015/12/12 Javascript
JS实现简单的tab切换选项卡效果
2016/09/21 Javascript
js倒计时小实例(多次定时)
2016/12/08 Javascript
js自定义Tab选项卡效果
2017/06/05 Javascript
Flutter部件内部状态管理小结之实现Vue的v-model功能
2019/06/11 Javascript
layer插件实现在弹出层中弹出一警告提示并关闭弹出层的方法
2019/09/24 Javascript
JS数组转字符串实现方法解析
2020/09/04 Javascript
仅利用30行Python代码来展示X算法
2015/04/01 Python
Windows下python2.7.8安装图文教程
2016/05/26 Python
pytorch中tensor的合并与截取方法
2018/07/26 Python
python 定时任务去检测服务器端口是否通的实例
2019/01/26 Python
Python 安装第三方库 pip install 安装慢安装不上的解决办法
2019/06/18 Python
python 发送json数据操作实例分析
2019/10/15 Python
Python爬虫实现百度翻译功能过程详解
2020/05/29 Python
css3中less实现文字长阴影(long shadow)
2020/04/24 HTML / CSS
在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern "C"
2014/08/09 面试题
异步传递消息系统的作用
2016/05/01 面试题
英语商务邀请函范文
2014/01/16 职场文书
关于圣诞节的广播稿
2014/01/26 职场文书
新年爱情寄语
2014/04/08 职场文书
乌镇导游词
2015/02/02 职场文书
留学推荐信怎么写
2015/03/26 职场文书
借条格式范本
2015/05/25 职场文书
会议营销主持词
2015/07/03 职场文书
CSS3 制作的图片滚动效果
2021/04/14 HTML / CSS
Mysql数据库值的添加、修改、删除及清空操作实例
2021/06/20 MySQL
基于angular实现树形二级表格
2021/10/16 Javascript