相容性(js)

weixin_34370347發表於2018-11-26
  1. DOM節點獲取
//DOM節點相關,主要相容IE 6 7 8
  function nextnode(obj){//獲取下一個兄弟節點
    if (obj.nextElementSibling) {
      return obj.nextElementSibling;//非IE678支援
    } else{
      return obj.nextSibling;//IE678支援

    };
  }
  1. 事件event獲取源
//event事件問題
  document.onclick=function(ev){//谷歌火狐的寫法,IE9以上支援,往下不支援;
    var e=ev;
    console.log(e);
  }
  document.onclick=function(){//谷歌和IE支援,火狐不支援;
    var e=event;
    console.log(e);
  }


//相容寫法;
  document.onclick=function(ev){//相容寫法;
    var e=ev||window.event;
    var mouseX=e.clientX;//滑鼠X軸的座標
    var mouseY=e.clientY;//滑鼠Y軸的座標
  }

3.獲取ClassName問題

  1. innertext相容性
Safari、Opera和Chrome支援innerText屬性。
Firefox雖然不支援innerText,但支援作用類似的textContent屬性
var div = document.getElementById("content");
function setInnerText(element, text) {
    if (typeof element.textContent == "string") {   //Firefox
        element.textContent = text;    
    } else {
        element.innerText = text;
    }
}
function getInnerText(element) {
    return (typeof element.textContent == "string") ? element.textContent : element.innerText;
}
setInnerText(div, "Hello world!");
alert(getInnerText(div)); //"Hello world!"

5.設定監聽事件

//設定監聽事件
   function addEvent(obj,type,fn){//新增事件監聽,三個引數分別為 物件、事件型別、事件處理函式,預設為false
    if (obj.addEventListener) {
      obj.addEventListener(type,fn,false);//非IE
    } else{
      obj.attachEvent('on'+type,fn);//ie,這裡已經加上on,傳參的時候注意不要重複加了
    };
  }
  function removeEvent(obj,type,fn){//刪除事件監聽
    if (obj.removeEventListener) {
      obj.removeEventListener(type,fn,false);//非IE
    } else{
      obj.detachEvent('on'+type,fn);//ie,這裡已經加上on,傳參的時候注意不要重複加了
    };
  }

相關文章