0

scrollTop 関数を使用して、ユーザーが画面の下部からどれだけ近づいているかを検出して、コンテンツを追加しています。私のjavascript関数は次のようなものです:

  if ($(window).scrollTop() >= $(document).height() - $(window).height() - 75) {
    var url = '<%=Url.Action("MoreView", "Status", new { id = ViewData["Id"], 
    page = Convert.ToInt32(ViewData["PageNumber"])+1 })%>';

            NextPage(url); //this does an ajax call to the action method on the server

        }

すべてが正常に機能しています。問題は、window.ScrollTop > 75 が 2 倍または 3 倍速く発生し、同じコンテンツを 2 倍または 3 倍ロードすることです。サーバー側でセッション変数を使用することでおそらくこれを修正できますが、IMOが醜くなる可能性があるため、そのルートに行きたくありませんでした。助言がありますか?

4

1 に答える 1

0

現状では、常に同じ URL に対してリクエストを行うことになります (私があなたのしていることを誤解していない限り、毎回同じデータが返されます)。それを修正したら、ユーザーが関数でスクロールしたときに呼び出される関数をラップしたいと思うでしょう(この例ではdebounceUnderscore.js の関数を使用しています)。debounce

// Only call yourOnScroll once it hasn't been called
// for more than 100 milliseconds
yourOnScroll = _.debounce(youOnScroll, 100);
于 2013-08-06T02:28:44.510 に答える