0

これは私のjsファイルにあるjsです

function refreshChat()
    {
        //speed up by selecting the div only once
        var shoutbox = $("#shoutbox");

        //get the height of the scroll (if any)
        var oldScrollH = shoutbox.attr("scrollHeight") - 20;

        //the ajax request
        $.ajax({
        url: 'shoutbox/update.php',
        //disable cache
        cache: false,
        success: function(html) {
            //update the shoutbox
            shoutbox.html(html);
            //get the heigth of the scroll after the update
            var newScrollH = shoutbox.attr("scrollHeight") - 20;
            if(newScrollH > oldScrollH)
            {
                //*move* the scroll down using an animation :)
                shoutbox.animate({scrollTop: newScrollH}, 1);
            }
        }   
        });
    }
    //set the refreshChat function to run every *refreshSeconds*
    setInterval(refreshChat, refreshSeconds);


});

FirefoxとIEでは正常に動作しますが、GoogleChromeでは常にフリックします。ページの読み込み時に一番下までスクロールしますが、関数を呼び出すとrefreshChat、divの約半分まで上に戻ります。

私もこれを持っています<head>

$(document).ready(function(){
        //speed up by selecting the div only once
        var shoutbox = $("#shoutbox");

        //get the height of the scroll (if any)
        var oldScrollH = shoutbox.attr("scrollHeight");

        //the ajax request
        $.ajax({
        url: 'shoutbox/update.php',
        //disable cache
        cache: false,
        success: function(html) {
            //update the shoutbox
            shoutbox.html(html);
            //get the heigth of the scroll after the update
            var newScrollH = shoutbox.attr("scrollHeight");
            if(newScrollH > oldScrollH)
            {
                //*move* the scroll down using an animation :)
                shoutbox.animate({scrollTop: newScrollH}, 1);
            }
        }   
        })
        });

ページの読み込み時にシャウトボックスを自動読み込みするように、これは競合している可能性がありますか?論理的に思えますが、ユーザーがシャウトボックスが最初に読み込まれるまで3秒待つ必要はありません。

4

1 に答える 1

1

文字列を int に変換する必要があります。

scrollHeightはカスタム属性であり、動的に追加されると思われるため、文字列にする必要があるため、int にキャストする必要があります。

parseInt(shoutbox.attr("scrollHeight"));

これを試してください。これで解決することを願っています。

于 2013-01-17T04:24:01.807 に答える