我基本上想要与facebook,twitter和所有其他“无限”滚动网站相同的功能,我现在使用的代码是
jQuery(document).ready(function(){
$ = jQuery;
$(window).scroll(function(){
if ($('.iosSlider').is(':visible'))
{
if($(window).scrollTop() + $(window).height() == $(document).height())
{
$.get('/our-work/fakework.php', function(data) {
$('#mobile-thumbs').append(data);
});
}
}
});
});
这样可以在所有桌面浏览器上完美运行,甚至在我的黑莓手机上也可以在垃圾邮件向下滚动按钮后工作。
然而,它在iphone或ipad上都没有被检测到,我认为它与视频有关,但是谁知道。
我尝试使用
的视口高度方法<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0">
但这似乎也无法修复它!
所以请有人就此如何在iDevices上检测页面底部进行分享!
谢谢!
欧文
答案 0 :(得分:9)
经过多年的调试,我发现了
if($(window).scrollTop() + $(window).height() == $(document).height())
实际上从未真正得到满足,但是它已经被满足了,但是看起来移动野生动物园并没有在视口移动时运行任何javascript。
这意味着除非你在文件高度上完全停止滚动(没有弹性底部物体),否则它将非常不可能达到相同的高度。
所以我只是简单地将代码更改为等于相同的高度,以检查它是否相等或更多,这样即使滚动过去也会触发!
所以修复程序如下所示
if($(window).scrollTop() + $(window).height() >= $(document).height()){
因此修改后的代码现在看起来像
jQuery(document).ready(function(){
$ = jQuery;
$(window).scroll(function(){
if ($('.iosSlider').is(':visible'))
{
if($(window).scrollTop() + $(window).height() >= $(document).height())
{
$.get('/our-work/fakework.php', function(data) {
$('#mobile-thumbs').append(data);
});
}
}
});
});
它现在的工作就像一个魅力!
答案 1 :(得分:2)
完全工作的多浏览器和多设备兼容的解决方案:
function getDocumentHeight() {
return Math.max(
Math.max(document.body.scrollHeight, document.documentElement.scrollHeight),
Math.max(document.body.offsetHeight, document.documentElement.offsetHeight),
Math.max(document.body.clientHeight, document.documentElement.clientHeight)
);
}
然后......
$(window).scroll(function() {
var docHeight = getDocumentHeight();
if($(window).scrollTop() + window.innerHeight == docHeight)
{
// enter your code here
}
});
也不要忘记viewport meta:
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1">
答案 2 :(得分:1)
我有同样的问题。代码段在桌面上运行良好,但在iOS移动设备上运行不正常。将document
替换为body
后问题得以解决。
此外,最好检查一下你是否接近屏幕底部:
if($(window).scrollTop() + $(window).height() > $('body').height() - 200)
答案 3 :(得分:0)
此解决方案将在所有设备上运行:
window.onscroll = function() {
var d = document.documentElement;
var offset = d.scrollTop + window.innerHeight;
var height = d.offsetHeight;
console.log('offset = ' + offset);
console.log('height = ' + height);
if (offset >= height) {
console.log('at the bottom');
}
}