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

"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 ステートメントに正しい条件を設定していることを確認してください。Web ページとともにスクロールするメニューが必要な場合は、最初に 2 つの if 条件を交換する必要があります。

于 2012-09-14T12:43:05.770 に答える
2

「トップ」はクロムでは異なる意味を持ちます。トップ変数の名前を変更してみてください。

于 2012-09-14T12:27:51.393 に答える