美文网首页
attachEvent与addEventListner,实现do

attachEvent与addEventListner,实现do

作者: mr_zhi | 来源:发表于2017-03-24 15:10 被阅读0次

    attachEvent与addEventListner,实现dom的上同一事件的多次绑定

    我们有时候会在一个元素上添加多次同一事件,然而普通绑定会导致只执行最后一次

    obj.onclick=method1;
    obj.onclick=method2;
    obj.onclick=method3;
    

    只会执行method3

    obj.attachEvent('onclick',method1);
    obj.attachEvent('onclick',method2);
    obj.attachEvent('onclick',method3);
    

    执行顺序是method3,method2,method1
    可惜,这是微软的私人方法
    主流浏览器都支持W3C标准的addEventListener方法

    obj.addEventListener('onclick',method1);
    obj.addEventListener('onclick',method2);
    obj.addEventListener('onclick',method3);
    

    执行顺序是method1,method2,method3

    因此,我们可以写个函数来做下兼容处理

    function addHandleEvent(obj, type, func) {
    
        if (obj.attachEvent) {
            obj.attachEvent('on' + type, func);
            return true;
        } else if (obj.addEventListener) {
            obj.addEventListener(type, func, false);
            return true;
        } else {
            obj['on' + type] = func;
        }
    }
    

    下边就可以安心的使用了:

    obj.addHandleEvent(obj,'click',method1);
    obj.addHandleEvent(obj,'click',method2);
    obj.addHandleEvent(obj'click',method3);
    

    相关文章

      网友评论

          本文标题:attachEvent与addEventListner,实现do

          本文链接:https://www.haomeiwen.com/subject/kmrfottx.html