js兼容问题

来源:互联网 发布:网络客户服务的优势有 编辑:程序博客网 时间:2024/05/22 12:53

一:常遇到的关于浏览器的宽高问题:

//以下均可console.log()实验
  varwinW=document.body.clientWidth||document.docuemntElement.clientWidth;//网页可见区域宽
  varwinH=document.body.clientHeight||document.docuemntElement.clientHeight;//网页可见区域宽
  //以上为不包括边框的宽高,如果是offsetWidth或者offsetHeight的话包括边框
   
  varwinWW=document.body.scrollWidth||document.docuemntElement.scrollWidth;//整个网页的宽
  varwinHH=document.body.scrollHeight||document.docuemntElement.scrollHeight;//整个网页的高
 
  varscrollHeight=document.body.scrollTop||document.docuemntElement.scrollTop;//网页被卷去的高
  varscrollLeft=document.body.scrollLeft||document.docuemntElement.scrollLeft;//网页左卷的距离
 
  varscreenH=window.screen.height;//屏幕分辨率的高
  varscreenW=window.screen.width;//屏幕分辨率的宽
  varscreenX=window.screenLeft;//浏览器窗口相对于屏幕的x坐标(除了FireFox)
  varscreenXX=window.screenX;//FireFox相对于屏幕的X坐标
  varscreenY=window.screenTop;//浏览器窗口相对于屏幕的y坐标(除了FireFox)
  varscreenYY=window.screenY;//FireFox相对于屏幕的y坐标

二 :event事件问题:

//event事件问题
  document.onclick=function(ev){//谷歌火狐的写法,IE9以上支持,往下不支持;
    vare=ev;
    console.log(e);
  }
  document.onclick=function(){//谷歌和IE支持,火狐不支持;
    vare=event;
    console.log(e);
  }
  document.onclick=function(ev){//兼容写法;
    vare=ev||window.event;
    varmouseX=e.clientX;//鼠标X轴的坐标
    varmouseY=e.clientY;//鼠标Y轴的坐标
  }

三 : DOM节点相关的问题,我直接封装了函数,以便随时可以拿来使用:
//DOM节点相关,主要兼容IE 6 7 8
  functionnextnode(obj){//获取下一个兄弟节点
    if(obj.nextElementSibling) {
      returnobj.nextElementSibling;
    }else{
      returnobj.nextSibling;
    };
  }
  functionprenode(obj){//获取上一个兄弟节点
    if(obj.previousElementSibling) {
      returnobj.previousElementSibling;
    }else{
      returnobj.previousSibling;
    };
  }
  functionfirstnode(obj){//获取第一个子节点
    if(obj.firstElementChild) {
      returnobj.firstElementChild;//非IE678支持
    }else{
      returnobj.firstChild;//IE678支持
    };
  }
  functionlastnode(obj){//获取最后一个子节点
    if(obj.lastElementChild) {
      returnobj.lastElementChild;//非IE678支持
    }else{
      returnobj.lastChild;//IE678支持
    };
  }

四 : document.getElementsByClassName问题:
//通过类名获取元素
  document.getElementsByClassName('');//IE 6 7 8不支持;
 
  //这里可以定义一个函数来解决兼容问题,当然别在这给我提jQuery...
  //第一个为全局获取类名,第二个为局部获取类名
  functionbyClass1(oClass){//全局获取,oClass为你想要查找的类名,没有“.”
    vartags=document.all?document.all:document.getElementsByTagName('*');
    vararr=[];
    for(vari = 0; i < tags.length; i++) {
      varreg=newRegExp('\\b'+oClass+'\\b','g');
      if(reg.test(tags[i].className)) {
        arr.push(tags[i]);
      };
    };
    returnarr;//注意返回的也是数组,包含你传入的class所有元素;
  }
 
  functionbyClass2(parentID,oClass){//局部获取类名,parentID为你传入的父级ID
    varparent=document.getElementById(parentID);
    vartags=parent.all?parent.all:parent.getElementsByTagName('*');
    vararr=[];
    for(vari = 0; i < tags.length; i++) {
    varreg=newRegExp('\\b'+oClass+'\\b','g');
      if(reg.test(tags[i].className)) {
        arr.push(tags[i]);
      };
    };
    returnarr;//注意返回的也是数组,包含你传入的class所有元素;
   }

五 :




0 0
原创粉丝点击