我正在尝试进行无限滚动(不使用 jQuery)以在页面中显示更多结果。我正在使用 anIntersectionObserver
来检测调用的 div #paginate
,每次它进入屏幕时,#result
div 都会被刷新。
var result = document.querySelector('#result');
var paginate = document.querySelector('#paginate');
var observer = new IntersectionObserver(entries => {
if (entries.some(entry => entry.isIntersecting))
{
var pagination = 10;
fetch('/kernel/search.php?pagination='+pagination)
.then((response) => {
return response.text();
})
.then((html) => {
result.innerHTML = html;
});
}
});
observer.observe(paginate);
这是带有 HTML 的完整代码视图:
<html>
<body>
<div class="row justify-content-sm-center justify-content-md-center justify-content-lg-center justify-content-xl-start no-gutters min-vw-100" id="result">
<div class="col-sm-11 col-md-11 col-lg-9-result col-xl-4-result order-0">
<div class="card mx-3 mt-3">
<div class="card-body">
<a class="text-decoration-none" href="?topic=result-1">
<h5 class="card-title">
Result 1
</h5>
</a>
<p class="card-text text-truncate">
Result 1 description.</p>
</div>
</div>
<div class="card mx-3 mt-3">
<div class="card-body">
<a class="text-decoration-none" href="?topic=result-2">
<h5 class="card-title">
Result 2
</h5>
</a>
<p class="card-text text-truncate">
Result 2 description.</p>
</div>
</div>
<div class="alert alert-light text-dark text-center border mx-3 my-3" id="paginate">
More results
</div>
</div>
</div>
<script>
var result = document.querySelector('#result');
var paginate = document.querySelector('#paginate');
var observer = new IntersectionObserver(entries => {
if (entries.some(entry => entry.isIntersecting))
{
var pagination = 10;
fetch('/kernel/search.php?pagination='+pagination)
.then((response) => {
return response.text();
})
.then((html) => {
result.innerHTML = html;
});
}
});
observer.observe(paginate);
</script>
</body>
</html>
它有效,但它只在第一次有效,之后不会刷新#resultdiv。我可以在Web Browser > Inspect > Networkfetch选项卡中看到工作,但在第一次刷新 div 后没有任何活动,这意味着它不再检测到div。#result#paginate
这里发生了什么?我认为这是因为我正在使用 aninnerHTML并且在 div的第一次刷新之后observer以某种方式无法检测到div 。我该如何解决这个问题?#paginate#result
扬帆大鱼
翻过高山走不出你
隔江千里
SMILET
相关分类