zoukankan      html  css  js  c++  java
  • 事件绑定各方法及兼容性写法

    1事件绑定

    事件是用户或浏览器自身执行的某种动作,如click,响应某个事件的函数就叫做事件处理程序或事件监听器,事件处理程序的名字以On开头,如onclick.

     首先DOM0级事件处理,

    var btn=document.getElementById('myBtn');

    btn.onclick=function(){

    alert('this.id')//nyBtn

    }

    删除 btn.onclick=null;

    没有兼容性问题,但相同函数只能执行一次,否则覆盖。事件处理程序是在元素的作用域运行,this指的当前元素

    DOM2级事件处理,

    var btn=document.getElementById('myBtn');

    var handler=function(){alert(this.id)}//移除和添加,参数要相同,所以要先定义赋值,不然不生效

    btn.addEventListener('click',handler,false)/第三个参数false表示冒泡,true表示捕获//myBtn

    btn.removeEventListener(''click'',handler,false)//移除

    dom2级可以添加多个事件处理程序,执行顺序按添加顺序。

    IE事件处理程序

    var btn=document.getElementById('myBtn');

    var handler=function(){alert(this===window)}//移除和添加,参数要相同,所以要先定义赋值,不然不生效

    btn.attachEvent('onclick',handler)//两个参数,只在冒泡阶段执行//true

    btn.detachEvent('onclick',handler)//移除

    可以添加多个事件处理程序,执行顺序和添加顺序相反。

    兼容性处理

    参考高级程序设计,用以下方式

     var EventHandler={
              addHandler:function(element,type,func){
                  if(element.addEventListener){   //判断是否存在dom2方法
                      element.addEventListener(type,func,false);
                  }else if(element.detachEvent){  //是否为IE8及以前
                      element.attachEvent('on'+type,func);
                  }else{
                      element['on'+type]=func;  //其他情况
                  }
              },
              removerHandler:function(element,type,func){
                  if(element.removeEventListener){
                      element.removeEventListener(type,func,false);
                  }else if(element.detachEvent){
                      element.detachEvent('on'+type,func);
                  }else{
                      element['on'+type]=null;
                  }
              }
          }

    var btn=document.getElementById('myBtn');

    var handler=function(){alert(666)};

    EventUtil.addHandler(btn,'click',handler);//添加事件

    EventUtil.removeHandler(btn,'click',handler);//移除事件

  • 相关阅读:
    转载-HTTP
    程序员如何写出杀手级的简历
    23 岁的你,曾处于什么样的状态?现在呢?
    IntelliJ IDEA 14 java项目中添加jar包
    BNR Android Demo学习笔记(一)——CrimeIntent
    Android高仿微信(一)——如何消除启动时的白屏
    Swift2.1 语法指南——高级操作符
    Swift2.1 语法指南——访问控制
    Swift2.1 语法指南——泛型
    Swift2.1 语法指南——协议
  • 原文地址:https://www.cnblogs.com/cumting/p/6719430.html
Copyright © 2011-2022 走看看