2

该脚本在 FF 和 IE 中完美运行,但在 Chrome 中却不行。有人可以帮我找出问题所在吗?

if statmenst 似乎没有在应该运行的时候运行,它们在应该运行时什么也不做。

var top = 285;
var bottom = 650;

var pageheight, maxscroll;


window.onload = function(){

    pageheight = document.body.offsetHeight;

    maxscroll = pageheight - (bottom+40);

}

    window.onscroll = function(){

        var element = document.getElementById("guide-menu");

        if(window.pageYOffset < top){

            element.style.position = "absolute";
            element.style.top = "300px";

        }

        if(window.pageYOffset > top){

            element.style.top = "10px";
            element.style.position = "fixed";
            element.style.marginTop = "0px";

        }

        if(window.pageYOffset > maxscroll){

            element.style.position = "absolute";

            element.style.marginTop = (pageheight - bottom - 40) + "px";

        }

}
4

2 回答 2

2

“顶部”在 chrome 中具有不同的含义。只需尝试重命名顶级变量。

于 2012-09-14T12:27:51.393 回答
2

“top”变量返回最顶层的浏览器窗口。Chrome 是唯一不支持覆盖此变量的主流浏览器。

将您的变量重命名为“myTop”之类的东西非常有效。

这段代码运行良好。

    var myTop = 285;
    var bottom = 650;

    var pageheight, maxscroll;


    window.onload = function(){
        pageheight    = document.body.offsetHeight;
        maxscroll     = pageheight - (bottom+40);

        window.onscroll = function()
        {
            var element = document.getElementById("guide-menu");
            if(window.pageYOffset < myTop)
            {
                element.style.position = "absolute";
                element.style.top = "300px";
            }

            if(window.pageYOffset > myTop)
            {
                element.style.top = "10px";
                element.style.position = "fixed";
                element.style.marginTop = "0px";
            }

            if(window.pageYOffset > maxscroll)
            {
                element.style.position = "absolute";
                element.style.marginTop = (pageheight - bottom - 40) + "px";
            }
        }
    }

顺便说一句,检查您是否为 IF 语句设置了正确的条件。如果你想要一个随网页滚动的菜单,那么你必须先交换两个 if 条件。

于 2012-09-14T12:43:05.770 回答