如何通过onscroll实现页面滚动到底部时的无缝跳转?
解决方案:滚动到底部立即跳转
完全可以通过onscroll实现无缝的立即跳转效果,你只需要移除代码里的setTimeout延迟,同时加个简单标记避免重复触发即可:
修改后的代码
<script> let hasScrolledToBottom = false; // 标记是否已触发跳转 window.onscroll = function(ev) { // 判断是否滚动到底部,同时确保只触发一次跳转 if ((window.innerHeight + window.pageYOffset) >= document.body.offsetHeight && !hasScrolledToBottom) { hasScrolledToBottom = true; // 标记已触发,防止重复执行 window.location.href = "https://www.google.com"; // 立即跳转 } }; </script> <body> <h1>This is page 1</h1> <img src="https://picsum.photos/seed/picsum/1200/800"> </body>
关键说明
- 移除
setTimeout后,满足滚动到底部条件时会立即执行跳转,实现无缝过渡 - 添加
hasScrolledToBottom变量是因为滚动到底部时,onscroll事件可能连续触发多次,这个标记能确保跳转只执行一次,避免不必要的重复操作 - 如果遇到判断不准确的情况(比如页面有特殊布局),可以把
document.body.offsetHeight换成document.documentElement.offsetHeight,适配不同页面结构
内容的提问来源于stack exchange,提问作者Selorm Amuzu
相关产品推荐
相关产品推荐

