javascript事件对象修正(处理浏览器间事件对象的差异)

//修正事件对象 处理兼容性
    fixEvent:function(e){
        var e = e || window.event;

        if(!e.target){ //IE

            e.target = e.srcElement; //触发事件的对象

            e.layerX = e.offsetX; //鼠标在事件对象上的具体为止,W3C DOM 下,需要设置position:absolute; offsetX不包含对象边框,当边框较大时,应该考虑加上clientLeft 和clientTop
            e.layerY = e.offsetY;

            e.pageX = e.clientX + document.documentElement.scrollLeft;  //鼠标事件相对整个页面的位置
            e.pageY = e.clientY + document.documentElement.scrollTop;

            e.stopPropagation = function(){ //阻止事件冒泡
                e.cancelBuble = true;
            }

            /*
                再弹出菜单中或者导航条中,会经常使用
            */
            if(e.type == "mouseover"){ // 判断鼠标来自哪个对象
                e.relatedTarget = e.fromElement;
            }else{
                e.relatedTarget = e.toElement;// 判断鼠标滑动到哪个对象
            }

            e.preventDefault = function(){ //阻止浏览器默认事件
                e.returnValue = false;
            }
                
        }

        return e;
    };
    

 

posted on 2013-05-09 18:07  专注前端  阅读(158)  评论(0编辑  收藏  举报

导航