JS常見的11種兼容
阿新 • • 發佈:2018-10-22
arc 超鏈接 ets src bsp [] ren 常見 compute
一、scrollTop/Left的兼容
document.documentElement.scrollTop || document.body.scrollTop;
document.documentElement.scrollLeft || document.body.scrollLeft;
二、getElementsByClassName兼容(IE9以下)
function byClassName(obj,className){ if(obj.getElementsByClassName){ return obj.getElementsByClassName(className); }else{ var arr = []; //放置獲取到的相同class名的對象集 var eles = obj.getElementsByTagName(‘*‘); //獲取所有的標簽 //遍歷所有的標簽 for(var i = 0,len = eles.length;i < len;i ++){ //判斷對象的類名是否我指定的類名 if(eles[i].className == className){ arr.push(eles[i]); //放到數組中 } } return arr; } }
三、獲取class屬性值的兼容
var attr = oDiv.getAttribute(‘class‘) == null ? oDiv.getAttribute(‘className‘) : oDiv.getAttribute(‘class‘);
四、獲取非行內樣式
function getStyle(obj,attr){ return obj.currentStyle ? obj.currentStyle[attr] : getComputedStyle(obj,true)[attr]; }
五、獲取事件對象的兼容
var e = evt || window.event;
六、獲取鼠標按鍵編碼值的兼容
function getButton(evt){ //獲取事件對象的兼容 var e = evt || window.event; if(evt){ //標準瀏覽器 return e.button; }else if(window.event){ //IE switch(e.button){ case 1 : return 0; case 4 : return 1; case 2 : return 2; } } }
七、獲取鍵盤按鍵編碼值的兼容
evt.charCode || evt.keyCode || evt.which
八、阻止事件冒泡的兼容
e.stopPropagation ? e.stopPropagation() : e.cancelBubble = true;
九、阻止超鏈接的默認行為
evt.preventDefault ? evt.preventDefault() : evt.returnValue = false;
十、添加/移除事件監聽
function addEventListener(obj,event,fn,boo){ if(obj.addEventListener){ obj.addEventListener(event,fn,boo); }else{ obj.attachEvent(‘on‘ + event,fn); } } function removeEventListener(obj,event,fn,boo){ if(obj.removeEventListener){ obj.removeEventListener(event,fn,boo); }else{ obj.detachEvent(‘on‘ + event,fn); } }
十一、獲取事件源的兼容
var target = e.target || e.srcElement;
JS常見的11種兼容