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 发出请求(每次都会产生相同的数据,除非我误解了您在做什么)。一旦你解决了这个问题,你可能想要包装你在用户滚动一个函数时调用的debounce函数(我在debounce这个例子中使用了 Underscore.js 的函数):

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