function  getScrollTop () {
            var scrollPos;
            if (window.pageYOffset) {
                scrollPos = window.pageYOffset;
            }
            else if (document.compatMode && document.compatMode != 'BackCompat') {
                scrollPos = document.documentElement.scrollTop;
            }
            else if (document.body) {
                scrollPos = document.body.scrollTop;
            }
            return scrollPos;
        }

解决方案 »

  1.   


    /**   
     * 设置元素的左偏移量  
     * type function   
     * @param {Object} element 对应的元素
     */    
    function getElementLeft(element){
    var actualLeft = element.offsetLeft;    
    var current = element.offsetParent;    
    while (current != null){
    actualLeft += current.offsetLeft;    
    current = current.offsetParent;    
    }
    return actualLeft;
    }
    /**
     * 设置元素的上偏移量  
     * type function   
     * @param {Object} element 对应的元素
     */
    function getElementTop(element){
    var actualTop = element.offsetTop; 
    var current = element.offsetParent;
    while (current != null){
    actualTop += current.offsetTop;
    current = current.offsetParent;
    }
    return actualTop;   
    }
    /**   
     * 得到元素的rect  
     * type function   
     * @param {Object} element 对应的元素
     */  
    function getBoundingClientRect(element){
    var scrollTop = document.body.scrollTop|document.documentElement.scrollTop;
    var scrollLeft = document.body.scrollLeft|document.documentElement.scrollLeft;
    //判断支不支持getBoundingClientRect方法
    if(element.getBoundingClientRect()){
    //去除不同浏览器的2px的bug
    if(typeof arguments.callee.offset != "number"){
    var temp = document.createElement("div");    
    temp.style.cssText = "position:absolute;left:0;top:0;";    
    document.body.appendChild(temp);
    arguments.callee.offset = -temp.getBoundingClientRect().top - scrollTop; 
    document.body.removeChild(temp);
    temp = null;
    }
    var rect = element.getBoundingClientRect();
    var offset = arguments.callee.offset;
    return {
    left : rect.left + offset,
    top : rect.top + offset
    };
    } else {
    var actualLeft = getElementLeft(element);
    var actualTop = getElementTop(element);  
    return {
    left : actualLeft - scrollLeft,
    top : actualTop - scrollTop
    }
    }
    }