addEventListener兼容性问题

addEventListener兼容性问题

十月 27, 2018

addEventListener兼容性问题

FF和Chrome只支持addEventListener
addEventListener(click,fn,false);(true是捕获/false事件冒泡)
移除:removeEventListener

ie只支持attachEvent
attachEvent(onclick,fn);/移除:detachEvent
问题:attachEvent的this指向是window(用call),IE后绑定的事件先调用,顺序有问题

解决方法:

函数封装:

function addEvent(obj,ev,fn) //obj为要绑定事件的元素,ev为要绑定的事件,fn为绑定事件的函数
{
        if(obj.addEventListener){
            obj.addEventListener(ev,fn,false);
    }else if(obj.attachEvent){
               obj[ev+fn] = function(){
                        fn.call(obj);
                        }
            obj.attachEvent("on" + ev,obj[ev+fn]);
        }else {
               obj['on'+type]=fn;
        }}
function removeEvent(obj,ev,fn)
{
       if(obj.removeEventListener){
                obj.removeEventListener(ev,fn);
        }else if(obj.detachEvent){
            obj.detachEvent("on" + ev, obj[ev+fn]);
                    }
           }else {
            obj['on'+type]=null;
        }}