首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无限滚动:在滚动过程中浏览器一次又一次冻结。

无限滚动:在滚动过程中浏览器一次又一次冻结。
EN

Stack Overflow用户
提问于 2022-10-07 22:09:25
回答 1查看 52关注 0票数 0

对于我的项目,我编写了一个无限滚动(index.php)程序,当用户到达页面末尾时,它应该总是从另一个子页面(带有偏移量的load.php)加载内容。

我的问题是,当我在移动设备上使用浏览器滚动(在火狐和iOS上进行测试)时,浏览器会冻结一段短时间(1-2秒),然后很快就可以再次滚动,这非常烦人。

到目前为止,在笔记本电脑/个人电脑上,一切都能正常工作(在Win10上用火狐和边缘进行测试)。然而,在笔记本电脑/个人电脑上,我发现当新内容被加载时,滚动条一直在快速上升和下降,而且从来不会停滞不前,这看起来也有点令人不安。

到目前为止,我还没有在互联网上找到解决问题的办法。我希望你们中的一个能帮我,并可能修改脚本。谢谢!下面我已经用摘录显示了我的代码(这个项目非常大,所以只有摘录):

HTML (index.php):

代码语言:javascript
复制
<!-- Fallback -->
<div id="no" style="display:none">
   No Content found...
</div>

<!-- Infinity -->
<div id="inf-0"></div><div id="inf-3" style="display:none"></div><div id="inf-6" style="display:none"></div><div id="inf-9" style="display:none"></div><div id="inf-12" style="display:none"></div><div id="inf-15" style="display:none"></div><div id="inf-18" style="display:none"></div><div id="inf-21" style="display:none"></div><div id="inf-24" style="display:none"></div><div id="inf-27" style="display:none"></div><div id="inf-30" style="display:none"></div><div id="inf-33" style="display:none"></div><div id="inf-36" style="display:none"></div><div id="inf-39" style="display:none"></div><div id="inf-42" style="display:none"></div><div id="inf-45" style="display:none"></div> ...

<!-- Spinner --->
<center><i class="fas fa-spinner fa-pulse fa-2x" id="spinner"></i></center>

Javascript:

代码语言:javascript
复制
var end = 0;
var infinity = 0;

window.addEventListener('load', function () {
    feed(infinity);
    infinity = infinity+3;
});

$(window).scroll(function() { 
    if(end == 0) {
        if($(window).scrollTop() + $(window).height() > $(document).height() - 75) {
            document.getElementById("inf-"+infinity).style.display = "block";
            feed(infinity);
            infinity = infinity+3;
        }
    }
});

function feed(infinity) {
    $("#inf-" + infinity).load("load.php?off="+infinity+"&url="+encodeURIComponent(window.location.href), function( response, status, xhr ) {
        if (response == "") {
            document.getElementById("spinner").style.display = "none";
            document.getElementById("inf-"+infinity).style.display = "none";
            end = 1;
        } else {
            if (response == "no") {
                document.getElementById("spinner").style.display = "none";
                document.getElementById("inf-"+infinity).style.display = "none";
                document.getElementById("no").style.display = "block";
                end = 1;
            } else {
                document.getElementById("spinner").style.display = "block";
            }
        }  
    });
}
EN

回答 1

Stack Overflow用户

发布于 2022-10-08 09:03:59

代码语言:javascript
复制
<div style="height: 400px !important" id="heighthelper">&nbsp;</div>

解决了将这个div添加到身体区域的问题。添加到if响应==“或== no”区域的Javascript中:

代码语言:javascript
复制
document.getElementById("heighthelper").style.display = "none";
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73993008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档