求助:Infinite Scrolling滚动时自动生成分页子链接问题
解决Tumblr无限滚动中分页链接重复拼接的问题
你的问题根源是Infinite Scroll未正确更新分页链接状态,导致多次加载后重复拼接页码路径,以下是几种可行的修复方案:
方案1:启用历史记录并配置核心参数
修改初始化代码,添加history和checkLastPage选项,让Infinite Scroll自动管理分页链接的更新:
window.onload = function() { var elem = document.getElementById('content'); let infScroll = new InfiniteScroll(elem, { path: '.pagination__next', append: '.post', history: 'push', // 自动同步分页链接与历史记录,避免重复拼接 checkLastPage: true // 检测最后一页,停止无效请求 }); }
此方案依赖Tumblr{block:NextPage}生成的标准分页链接(如/page/2),Infinite Scroll会自动识别并更新下一页路径。
方案2:手动更新分页链接DOM
如果自动更新失效,可通过监听加载事件手动维护分页链接:
window.onload = function() { var elem = document.getElementById('content'); let infScroll = new InfiniteScroll(elem, { path: '.pagination__next', append: '.post' }); // 每次加载完成后替换分页链接 infScroll.on('load', function() { const oldLink = document.querySelector('.pagination__next'); if (oldLink) oldLink.remove(); // 从新加载的内容中提取新的分页链接 const newLink = infScroll.loaded.querySelector('.pagination__next'); if (newLink) document.body.appendChild(newLink); }); }
这种方式确保页面始终只有一个有效的下一页链接,避免Infinite Scroll读取旧路径重复拼接。
方案3:直接指定分页路径模板
跳过DOM中的分页链接,直接配置Tumblr标准分页路径模板:
window.onload = function() { var elem = document.getElementById('content'); let infScroll = new InfiniteScroll(elem, { path: '/page/{{#}}', // 用模板语法指定分页路径 append: '.post', pageIndex: 1 // 设置初始页码 }); }
此方案无需依赖{block:NextPage}生成的链接,Infinite Scroll会自动按模板生成下一页请求路径,从根源避免拼接错误。
内容的提问来源于stack exchange,提问作者diacetyl
相关产品推荐
相关产品推荐

