1.获取浏览器滚动条距离
function getScrollOffset(){ // 当window.pageXOffset存在时 if(window.pageXOffset){ return { x:window.pageXOffset, y:window.pageYOffset } }else{ // 当不存在时 return{ x:document.body.scrollLeft+document.documentElement.scrollLeft, y:document.body.scrollTop+document.documentElement.scrollTop } } }
2.封装方法求浏览器可视区域尺寸
function getViewportOffset(){ if(window.innerWidth){ return{ w:window.innerWidth, h:window.innerHeight } }else{ // 怪异/混杂模式,向后兼容浏览器版本 if(document.compatMode=="BackCompat"){ return{ w:document.body.clientWidth, h:document.body.clientHeight } }else{ return{ w:document.documentElement.clientWidth, h:document.documentElement.clientHeight } } } }
3.封装获取元素的属性
// ele位元素,prop为属性 function getStyle(ele,prop){ //获取权重最高的属性值,且会换算。em=px,color=rgb(0,0,0)--->IE8及以下不兼容 if(window.getComputedStyle){ return window.getComputedStyle[ele] }else{ //IE特有的方法,获取权重最高的属性值,不会换算 return ele.currentStyle[ele] } }
4.封装事件处理函数方法
// 封装事件处理函数的方法:ele(元素),type(事件类型),handle(处理函数) function addEvent(ele,type,handle){ if(ele.addEventListener){ ele.addEventListener(type,handle,false) }else if(ele.attachEvent){ ele.attachEvent('on'+type,function(){ // 注意:attachEvet里面的this指向的为window,在外部定义的handle函数this指向当前对象,通过call改变this指向 handle.call(ele) }) }else{ ele['on'+type]=handle } }
6.封装异步加载script
// 异步加载script-->url:外部JS代码; callback:存在外部JS代码中的函数 function loadScript(url,callback){ var script=document.createElement('script'); script.type="text/javascript"; if(script.readyState){ script.onreadystatechange=function(){ if(script.readyState=='complete'||script.readyState=="loaded"){ // callback(); 单个函数 tools[callback]();//多个函数 } } }else{ script.onload=function(){ // callback(); 单个函数 tools[callback]();//多个函数 } } script.src=url;//外部JS代码 document.head.appendChild(script) } // loadScript('demo.js',function(){test();}) 单个函数 loadScript('demo.js',"test1")//多个函数//demo.jsfunction test(){ console.log("test");}// 有多个函数时var tools={ test1:function(){ console.log("test1"); }, test2:function(){ console.log("test2"); }}