页面加载时就确定函数实现

我们知道使用js获取浏览器的信息时经常涉及浏览器的兼容性.例如获取浏览器的滚动条

Js代码  页面加载时就确定函数实现
  1. // Cross browser gets the position of scroll  
  2. com.whuang.hsj.getScroll=function(){  
  3.     return {  
  4.         top:document.documentElement.scrollTop || document.body.scrollTop,  
  5.         left:document.documentElement.scrollLeft || document.body.scrollLeft,  
  6.         height:document.documentElement.scrollHeight ||document.body.scrollHeight  
  7.     }  
  8. }  

 上面的方法每次执行时都得判断,所以我进行了如下优化:

Js代码  页面加载时就确定函数实现
  1. // Cross browser gets the position of scroll  
  2. com.whuang.hsj.getScroll=(function(){  
  3.     if(document.documentElement.scrollTop!=='undefined'&&document.documentElement.scrollTop!==0)  
  4.     {  
  5.         return function(){  
  6.             return {  
  7.                 top:document.documentElement.scrollTop,  
  8.                 left:document.documentElement.scrollLeft,  
  9.                 height:document.documentElement.scrollHeight  
  10.             };  
  11.         };  
  12.     }else return function(){  
  13.         return {  
  14.             top:document.body.scrollTop,  
  15.             left:document.body.scrollLeft,  
  16.             height:document.body.scrollHeight  
  17.         };  
  18.     };  
  19.       
  20. })();  

 核心思想:在初始化时就确定函数的实现方式.

但是在使用过程中出现了问题,因为它的判断条件是:

if(document.documentElement.scrollTop!=='undefined'&&document.documentElement.scrollTop!==0)

但是在页面初始化时这个判断的依据是有问题的,不是实时的.在火狐中就有问题.

 

上一篇:小白如何购买阿里云服务器(文档指南)?


下一篇:Linux之定时器与时间管理 【转】