如何调整JavaScript脚本实现触底后延迟30秒加载新URL?
修复滚动触底延迟30秒跳转的问题
你的代码核心问题是延迟函数和滚动触底逻辑完全脱节:delayExecution是页面加载时就直接执行的,和滚动到底部的事件没有任何关联,所以滚动触底时会直接执行跳转,根本不会触发延迟逻辑。
下面是修复后的完整代码:
window.scrollTo(0, document.body.scrollHeight); // 滚动触底后延迟跳转的函数 function loadNewUrlOnScroll() { // 检测是否滚动到页面底部 if ((window.innerHeight + window.scrollY) >= document.body.offsetHeight) { // 立即移除滚动监听,避免重复触发延迟逻辑 window.removeEventListener("scroll", loadNewUrlOnScroll); console.log("已滚动到底部,等待30秒后跳转..."); // 延迟30秒执行跳转 setTimeout(function() { window.location.href = "https://example.com/new-url"; }, 30000); // 30000毫秒 = 30秒 } } // 绑定滚动事件监听 window.addEventListener("scroll", loadNewUrlOnScroll);
关键修改说明:
- 将延迟逻辑直接整合到滚动触底的判断分支内,确保只有触发触底条件时才启动延迟
- 触底后立即移除滚动监听,避免用户在等待期间继续滚动导致多次触发延迟跳转
- 保留控制台日志输出,方便你直观查看触发状态
内容的提问来源于stack exchange,提问作者Tiv Vine
相关产品推荐
相关产品推荐

