原谅我:你好。我希望我不会在我的问题标题中混淆你们。
背景:我想要的实际上是更新网站的内容。有人告诉我一些插件,比如infinite-scroll
整个 Google 和 Stackoverflow,但我不想为此使用任何插件。我当时发现的是一个纯 jQuery 代码,用于检测用户在文档上的当前位置。事情是这样的:
$(window).scroll(function() {
if($(window).scrollTop() + $(window).height() == $(document).height()) {
alert("bottom!");
}
});
我发现了什么:
我在这里找到了这段代码:检查用户是否滚动到底部
这意味着我已经阅读了有关 stackoverflow 的所有问题。
问题是什么:问题是上面的代码不公平。它只有在我使用时才有效:== $(document).height()
因为它只会在用户位于文档末尾时运行代码。一旦我尝试使用类似的东西:$(document).height() - 100
或其他类似的东西。它不起作用。我必须转到文档的末尾,当我回来时它会显示警报!这对用户来说不太可能。
我也尝试过,unbind('scroll')
但是一旦通过警报就会停止代码执行!我的意思是它只会提醒用户一次,因此间接地它会为用户加载一次数据,然后会停止再次加载更多数据。
所以我认为在这里问这个问题会是一个更好的主意。我可以得到一个简单的 jQuery 代码,它会知道用户在屏幕上的存在!并且批量数据一次,因为当我使用> $(document).height()
它时,它会一直向我显示弹出窗口,但它应该停止显示弹出窗口并在发出请求后再次开始显示弹出窗口!
或者简单地说:
或者换句话说,我想要的是当用户向下移动到底部的 80% 时应该发出请求,所以当他到达页面的几乎 95% 部分时,数据被放置在那里并且他可以查看它,然后当他达到第 80% 部分时再次发出请求。等等!这部分很容易理解。
使用这个作品:
$(window).scroll(function() {
if($(window).scrollTop() + $(window).height() == $(document).height()) {
alert("Sending ajax request!");
$.ajax({
url: "ajax_requests/send_email_digest",
success: function (data) {
// show the data..if any
}
});
}
});
但这不会:
$(window).scroll(function() {
if($(window).scrollTop() + $(window).height() ==
$(document).height() - 100) {
alert("Sending ajax request!");
$.ajax({
url: "ajax_requests/send_email_digest",
success: function (data) {
// show the data..if any
}
});
}
});