一:常遇到的关于浏览器的宽高问题:
//以下均可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(var
i = 0; i < tags.length; i++) { varreg=new
RegExp('\\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(var
i = 0; i < tags.length; i++) { varreg=new
RegExp('\\b'+oClass+'\\b','g'); if(reg.test(tags[i].className)) { arr.push(tags[i]); }; }; returnarr;//注意返回的也是数组,包含你传入的class所有元素; }五 :
|
|
|
本文探讨了前端开发中常见的浏览器尺寸获取方法、鼠标事件处理兼容性方案、DOM节点操作函数封装及类名选择器的兼容实现。
940

被折叠的 条评论
为什么被折叠?



