zoukankan      html  css  js  c++  java
  • 事件绑定与解绑

    事件绑定与解绑

    var EventUtil = {
    
    addHandler:function (obj, type, handler) {
    
    if(obj.addEventListener) {               //如果是标准浏览器,即支持addEventListener的
    
    console.log('标准浏览器');
    
    obj.addEventListener(type, handler);
    
    } else if(obj.attachEvent) {            //IE低版本浏览器
    
    console.log('IE低版本浏览器');
    
    obj.attachEvent('on' + type, handler);
    
    } else {
    
    console.log('以上都不支持');
    
    obj['on' + type] = handler;
    
    }
    
    },
    
    removeHandler:function(obj, type, handler) {
    
    if(obj.removeEventListener) {         //标准浏览器
    
    obj.removeEventListener(type, handler);
    
    } else if(obj.detachEvent) {          //IE低版本浏览器
    
    obj.detachEvent('on' + type, handler);
    
    } else {                              //以上皆不是
    
    obj['on' + type] = null;
    
    }
    
    }
    
    }

    问题:在IE中使用attachEvent()与使用DOM0级方法的主要区别在于事件处理程序的作用域。在使用DOM0级方法的情况下,事件处理程序会在其元素的作用域内运行;在使用attachEvent()方法的情况下,事件处理程序会在全局作用域中运行,因此this等于window

     

    例:

    在低版本ie中div不变色

     

    在绑定事件的时候可以用

    function addHandler(obj,evname,fn){
    
    if(obj.addEventListener){
    
    obj.addEventListener(evname,fn,false);
    
    }else{
    
    obj.attachEvent('on'+evname,function(){
    
    fn.call(obj); //call方法第一个参数可以用来改变函数执行过程当中的内部this指向,attachEvent 下 this 指向的不是obj
    
    });
    
    }
    
    }
    
     
    
     
    

      

    在低版本ie下正常

     

     

    Obj.attachEvent(事件名称,事件函数)

    • 没有捕获
    • 事件有on
    • 事件函数执行顺序  (标准ie正序     非标准 倒序)
    • This指向window

     

    Obj.addEventListener(事件名称,事件函数,是否捕获)  ---->  默认false冒泡   true捕获

    • 有捕获
    • 事件名称没有on
    • 正序
    • this指向出发该事件的对象
    生命是一场华丽的绽放!
  • 相关阅读:
    Distributed Transaction Coordinator 服务因 3221229584 (0xC0001010) 服务性错误而停止 解决办法
    串行通信
    Sun下山后的IT格局 Oracle能抗衡IBM吗?
    串行通信比并行通信的速度更高
    ERP渠道商怨气冲天 自比“农民工”没有明天
    销售渠道
    甲骨文中国开始整合SUN中国 SUN市场部遭洗牌
    PHP 事件机制(2)
    (备忘)
    jquery键盘事件的更改
  • 原文地址:https://www.cnblogs.com/clown3/p/6172192.html
Copyright © 2011-2022 走看看