1

テキストエリアボックスの最後までスクロールするjQueryスクリプトがあります。この関数は、間隔ベースの自動 div リローダー (以下のスクリプト) 内にあります。誰かがテキスト領域をスクロールしているときに、それを下にスクロールするスクリプトの部分が無効になるようにしたい。

var refreshId = setInterval(function()
{
    $('#chatArea').load('run/chatBox.php', function() {     
            $('#chatAreaBox').scrollTop($('#chatAreaBox')[0].scrollHeight);
    });
}, 2500);
4

1 に答える 1

1

値を確認して、scrollTopアニメーションを実行する前にユーザーが下にスクロールしたかどうかを確認してください

var refreshId = setInterval(function()
{
    $('#chatArea').load('run/chatBox.php', function() {    
            if($('#chatAreaBox').scrollTop === 0)
                $('#chatAreaBox').scrollTop($('#chatAreaBox')[0].scrollHeight);
    });
}, 2500);

タイムスタンプを ( を使用してdate())scroll()イベントに保存し、間隔関数で確認してから、最後のスクロール イベントが 5 秒以上前に発生した場合にアニメーションを実行することもできます。

var timestamp = null;

    $('#chatArea').scroll(function() {    
        var d = new Date();
        timestamp = d.getTime();    
    });


var refreshId = setInterval(function()
{
    $('#chatArea').load('run/chatBox.php', function() { 

        var d = new Date();

            if((d.getTime() - timestamp) > 5000)
                $('#chatAreaBox').scrollTop($('#chatAreaBox')[0].scrollHeight);
    });
}, 2500);
于 2012-12-16T20:51:11.063 に答える