JavaScript无法在IE 6/7中为我的网站工作

时间:2011-10-30 23:16:30

标签: javascript internet-explorer-7 internet-explorer-6 lazy-loading onscroll

我的网站上运行了一些代码,可以检测屏幕上是否显示带有div photo的{​​{1}}或滚动到屏幕上。如果显示divclass会添加div,这会导致背景图片加载到div内。目的是延迟加载图像,以便网站加载速度更快。

除IE 6/7外,它在所有浏览器中都运行良好。有人能告诉我下面的代码有什么问题阻止它在这些IE浏览器中工作吗?

function $(a){
    return document.getElementById(a)
}
function scrll(){
    function a(d){
        var f=d.offsetTop,
            e=d.offsetLeft,
            c=d.offsetWidth,
            b=d.offsetHeight;
        while(d.offsetParent){
            d=d.offsetParent;
            f+=d.offsetTop;
            e+=d.offsetLeft
        }
        return(f<(window.pageYOffset+window.innerHeight)
            &&e<(window.pageXOffset+window.innerWidth)
            &&(f+b)>window.pageYOffset&&(e+c)>window.pageXOffset)
    }
    if(a($("photo"))){
        $("imgholder").className="pic11 pic21";
        if(window.removeEventListener){
            window.removeEventListener("scroll",scrll,false)
        }else{
            if(window.detachEvent){
                window.detachEvent("onscroll",scrll)
            }else{
                window.onscroll=null
            }
        }
    }
}
if(window.addEventListener){
    window.addEventListener("scroll",scrll,false);
}else{
    if(window.attachEvent){
        window.attachEvent("onscroll",scrll);
    }else{
        window.onscroll=scrll;
    }
}
setTimeout(scrll,1);

该代码在我的网站上有效:http://www.ericperrets.info/

1 个答案:

答案 0 :(得分:2)

IE没有innerHeight。请改用此功能:

function getWindowHeight()
{
    if (window.innerHeight) return window.innerHeight;
    if (window.document.documentElement.clientHeight) return window.document.documentElement.clientHeight;
    return window.document.body.clientHeight;
}

另外,一篇解释浏览器差异的好文章是http://www.howtocreate.co.uk/tutorials/javascript/browserwindow