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 相关文章推荐
学习ExtJS(二) Button常用方法
Oct 07 Javascript
javascript面向对象之访问对象属性的两种方式分析
Jan 13 Javascript
JavaScript之Object类型介绍
Apr 01 Javascript
javascript中返回顶部按钮的实现
May 05 Javascript
jquery插件jquery.confirm弹出确认消息
Dec 22 Javascript
Bootstrap学习笔记之css样式设计(1)
Jun 07 Javascript
JavaScript必知必会(二) null 和undefined
Jun 08 Javascript
基于JS实现二维码图片固定在右下角某处并跟随滚动条滚动
Feb 08 Javascript
vue增删改查的简单操作
Jul 15 Javascript
详解利用 Express 托管静态文件的方法
Sep 18 Javascript
Windows下Node.js安装及环境配置方法
Sep 18 Javascript
JS中常用的消息框总结
Feb 24 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
PHP+DBM的同学录程序(1)
2006/10/09 PHP
php中将一段数据存到一个txt文件中并显示其内容
2014/08/15 PHP
php将字符串转换成16进制的方法
2015/03/17 PHP
PHP执行SQL文件并将SQL文件导入到数据库
2015/09/17 PHP
PHP+Ajax实现验证码的实时验证
2016/07/20 PHP
jQuery easyui datagrid动态查询数据实例讲解
2013/02/26 Javascript
js实现同一页面多个运动效果的方法
2015/04/10 Javascript
javascript中setInterval的用法
2015/07/19 Javascript
jQuery密码强度检测插件passwordStrength用法实例分析
2015/10/30 Javascript
JavaScript——DOM操作——Window.document对象详解
2016/07/14 Javascript
canvas实现流星雨的背景效果
2017/01/13 Javascript
BootStrap中的Fontawesome 图标
2017/05/25 Javascript
利用js编写网页进度条效果
2017/10/08 Javascript
angularJs中跳转到指定的锚点实例($anchorScroll)
2018/08/31 Javascript
解决axios会发送两次请求,有个OPTIONS请求的问题
2018/10/25 Javascript
JS实现将对象转化为数组的方法分析
2019/01/21 Javascript
javascript原型链学习记录之继承实现方式分析
2019/05/01 Javascript
JS定义函数的几种常用方法小结
2019/05/23 Javascript
Vue 实现点击空白处隐藏某节点的三种方式(指令、普通、遮罩)
2019/10/23 Javascript
初步探究Python程序的执行原理
2015/04/11 Python
用Python实现换行符转换的脚本的教程
2015/04/16 Python
深入解析Python中的list列表及其切片和迭代操作
2016/03/13 Python
Python判断列表是否已排序的各种方法及其性能分析
2016/06/20 Python
理论讲解python多进程并发编程
2018/02/09 Python
python定向爬取淘宝商品价格
2018/02/27 Python
Jupyter notebook在mac:linux上的配置和远程访问的方法
2019/01/14 Python
Python3.5基础之NumPy模块的使用图文与实例详解
2019/04/24 Python
Django model select的多种用法详解
2019/07/16 Python
澳大利亚在线高跟鞋商店:Shoe Me
2019/11/19 全球购物
水电工岗位职责
2014/02/12 职场文书
语文高效课堂实施方案
2014/05/03 职场文书
2014年小学班主任工作总结
2014/11/08 职场文书
2014年会计工作总结
2014/11/27 职场文书
先进教师个人主要事迹材料
2015/11/03 职场文书
解析laravel使用workerman用户交互、服务器交互
2021/04/28 PHP
Python卷积神经网络图片分类框架详解分析
2021/11/07 Python