天天看點

常用的浏覽器相容問題,包含滾動條、擷取事件對象、擷取非行内樣式、擷取滑鼠編碼值、事件監聽等

1、滾動條

//1.滾動條到頂端的距離(滾動高度)
var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;

//2.滾動條到左端的距離
var scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft;
           

2、擷取非行内樣式

//擷取非行内樣式相容    IE:currentStyle  标準:getComputedStyle
function getStyle(obj,attr){
    return window.getComputedStyle ? getComputedStyle(obj,true)[attr] : obj.currentStyle[attr];
}
//div.style.width =  '';設定樣式
//obj['屬性']: 對象是變量時,必須用對象['屬性']擷取。
           

3、擷取事件對象的相容

evt = evt || window.event
           

4、擷取滑鼠編碼值的相容

function getButton(evt){
    var e = evt || window.event;
    if(evt){
        return e.button;
    }else if(window.event){
        switch(e.button){
            case 1 : return 0;
            case 4 : return 1;
            case 2 : return 2;
        }
    }
}
           

5、擷取鍵盤按鍵編碼值

var key = evt.keyCode || evt.charCode || evt.which;
           

 6、阻止事件冒泡

e.stopPropagation ? e.stopPropagation() : e.cancelBubble = true;
           

 7、阻止超連結的預設行為

evt.preventDefault ? evt.preventDefault() : evt.returnValue = false;
           

8、添加、移除事件監聽

function addEventListener(obj,event,fn,boo){
    if(obj.addEventListener){
        obj.addEventListener(event,fn,boo);
    }else if(obj.attachEvent){
        obj.attachEvent('on' + event,fn);
    }
}
           
function removeEventListener(obj,event,fn,boo){
    if(obj.removeEventListener){
        obj.removeEventListener(event,fn,boo);
    }else if(obj.detachEvent){
        obj.detachEvent('on' + event,fn);
    }
}
           

9、擷取事件源

var target = event.target || event.srcElement;
           

繼續閱讀