我正在使用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&gt; 75有时会发生2到3次,以至于加载相同的内容2到3次。我可以通过在服务器端使用会话变量来解决这个问题,但不想去那条路线,因为这可能会让丑陋的IMO。有什么建议吗?
答案 0 :(得分:0)
现在,您将始终向同一个URL发出请求(每次都会生成相同的数据,除非我误解了您的操作)。一旦你解决了这个问题,你可能想要包装当用户在debounce
函数中滚动时调用的函数(我在这个例子中使用的是Underscore.js'debounce
函数):< / p>
// Only call yourOnScroll once it hasn't been called
// for more than 100 milliseconds
yourOnScroll = _.debounce(youOnScroll, 100);