我遇到过一些底部有页脚的网站,当我滚动到页脚上方的区域时,实际上会发生滚动。
要自动滚动这些页面,但我的代码目前的问题是它位于页面底部,我直接到达页脚,因此页脚上方的滚动触发器不会被触发。
有什么办法可以达到同样的效果吗?
这是我当前尝试从控制台执行的操作:
(function() {
var intervalObj = null;
var retry = 0;
var clickHandler = function() {
console.log("Clicked; stopping autoscroll");
clearInterval(intervalObj);
document.body.removeEventListener("click", clickHandler);
}
function scrollDown() {
var scrollHeight = document.body.scrollHeight,
scrollTop = document.body.scrollTop,
innerHeight = window.innerHeight,
difference = (scrollHeight - scrollTop) - innerHeight
if (difference > 0) {
window.scrollBy(0, difference);
if (retry > 0) {
retry = 0;
}
console.log("scrolling down more");
} else {
if (retry >= 3) {
console.log("reached bottom of page; stopping");
clearInterval(intervalObj);
document.body.removeEventListener("click", clickHandler);
} else {
console.log("[apparenty] hit bottom of page; retrying: " + (retry + 1));
retry++;
}
}
}
document.body.addEventListener("click", clickHandler);
intervalObj = setInterval(scrollDown, 1000);
})()
有很多网站都有此功能,您可以尝试一下相同的网站
https://www.zomato.com/bangalore/indiranagar-restaurants
注意:与此类似的问题并没有回答如何在页面的某个中间点滚动,而是直接将我带到页脚,因此这不是重复的
最佳答案
逻辑是保留到滚动条的中间,除非页面完全加载。我们可以稍微调整代码以实现滚动条的最后位置。试试这个:
var scrollHeight = 0,
newScrollHeight;
do {
window.scrollTo(0, document.body.scrollHeight / 2);
newScrollHeight = document.body.scrollHeight / 2;
if (newScrollHeight == scrollHeight) {
break;
} else {
scrollHeight = newScrollHeight;
}
} while (true);
关于javascript - 使用 Javascript 滚动网页,其滚动在页面中间触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69439716/