3

メイン UI には、JavaScript を使用してブラウザーからのスクロール イベントに応答する UI ウィジェットがあります。各スクロール イベントへの応答は比較的高価です。ユーザーは、最初のいくつかがウィジェット内で処理およびレンダリングされている間に、大量のスクロール イベントを簡単に「キューに入れる」ことができます。

これに伴う問題は、ウィジェットが最終的に「スクロール処理の煉獄」に行き着き、そこで各増分中間スクロール イベントが処理およびレンダリングされることです。

例: ユーザーは ab、次に bc、次に de、次に ef などとスクロールしました。スクロール イベント処理は、ユーザーが yz イベントをトリガーするまでに、bc スクロールのレンダリングにまだ取り組んでいる可能性があります。

代わりに、これらのイベントをよりインテリジェントに管理したいと考えています。スクロール イベントの結果をレンダリングしてから、ユーザーがどこにいても「追いつき」、時代遅れになった中間スクロールをスキップできれば素晴らしいことです。

これを行う最善の方法は何ですか?

4

1 に答える 1

2

あなたはすでにこのようなことをしているかもしれませんが、私は基本的にユーザーがまだアクティブにスクロールしているかどうかを判断するタイマーを使用します。

これに似た何か:

// need to have this variable outside the scope of the handler defined below
var timeoutId = null;

// think of "connect" as pseudocode for whatever you use to connect handlers
connect(widget, "onscroll", function() {
    // ...scrolling...
    if(timeoutId != null) clearTimeout(timeoutId);
    timeoutId = setTimeout(function() {
        // *probably* done scrolling, it has been  
        // 1 second since the last scroll...  
        // run your code to render current position here  
    }, 1000);
});
于 2008-11-25T17:48:58.100 に答える