天天看点

跨兼容浏览器的事件处理程序

从事前端开发工作的童鞋们,肯定会遇到浏览器事件处理兼容问题。从DOM0级事件处理程序到DOM2级事件处理程序。以及IE这个永恒的话题。

下面是兼容所有浏览器的时间处理程序,包含添加、删除、阻止冒泡、取消默认行为、获取事件对象event、获取事件目标方面,直接上码:

(function(){
    var EventUitl = {
        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; }
        },
        removeHandler : function(element , type , handler){
            if(element.removeEventListener){ element.removeEventListener(type , handler ,false); }else if(element.detatchEvent){ element.detatchEvent('on' + type , handler); }else{ element['on' +type] = null; }
        },
        getEvent:function(event){
            return event ? event : window.event;
        },
        getTarget:function(event){
            return event.target || event.srcElement;
        },
        preventDefault:function(event){
            if(event.preventDefault){ event.preventDefault(); }else{ event.returnValue = false; }
        },
        stopPropagation:function(event){
            if(event.stopPropagation){ event.stopPropagation(); }else{ event.cancelBubble = true; }
        }
    }
})();
           

有个值得注意的点是,由于IE不支持事件捕获,所以上面这个方法只能用来阻止事件冒泡。

继续阅读