2

私が取り組んでいる Web アプリのユーティリティ ページを作成しています。一種の「コンソール」として使用したい要素があります。

(プロトタイプの を使用して) Ajax 呼び出しを介してコンソールのエントリを取得しますAjax.PeriodicalUpdater

私が抱えている問題は、「コンソール」の下部に新しい行を挿入すると、スクロールバーが最初の位置にとどまることです(手動で下にスクロールしない限り、常に上部の行が表示されます)。

スクロールバーを自動的に一番下に保つにはどうすればよいですか?

このプロジェクトでそれを必要とするいくつかのライブラリのプロトタイプを使用しているので、可能であればそれまたは通常の JavaScript を使用したいと思います。

メモとして、私はすでにこれを試しました:

onComplete: function() { 
    $('console').scrollTop = $('console').scrollHeight;
}

常に「一歩遅れて」おり、最新のアイテムが表示されないことを除けば、ほとんど機能します。

4

2 に答える 2

4
new Ajax.PeriodicalUpdater(container, url, {
    onComplete: function() {
        (function() {
            container.scrollTop = container.scrollHeight;
        }).defer();
    }
});
于 2008-10-30T05:27:15.873 に答える
1

へー、私はほぼ同じもの (Ajax コンソール) を構築していましたが、オーバーフローした div が一番下までスクロールしないという問題がありました。

そしてスタックオーバーフローは私がそれを解決するのを助けました! それもあなたに役立つことを願っています!

JavaScript でオーバーフローした DIV をスクロールする

編集:私の質問ではjQueryを使用しましたが、問題はJSフレームワークではなく、使用しているCSS属性にあります。一部のブラウザはこれらの属性に少しバグがあるため、基本的には Math.max(div.scrollHeight, div.clientHeight) を取得する必要があります。

于 2008-10-30T05:56:47.717 に答える