6

我基本上想要与 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页面底部的信息!

谢谢!!

欧文

4

4 回答 4

11

经过多年的调试,我发现

if($(window).scrollTop() + $(window).height() == $(document).height())

从来没有真正遇到过,好吧,它已经遇到过,但是移动 safari 似乎没有运行任何 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);
                });
                }
             }
        });
});

它现在就像一个魅力!

于 2012-06-23T21:33:34.903 回答
3

完全工作的多浏览器和多设备兼容的解决方案:

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
                 }
        });

也不要忘记视口元数据:

<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1">
于 2017-07-02T08:50:21.427 回答
1

我遇到过同样的问题。该代码片段在桌面上运行良好,但在 iOS 移动设备上运行良好。更换后document问题body就解决了。此外,最好检查您是否靠近屏幕底部:

if($(window).scrollTop() + $(window).height() > $('body').height() - 200)
于 2015-04-28T01:50:08.990 回答
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');
  }
}
于 2018-10-09T08:51:31.847 回答