【发布时间】:2021-11-25 02:22:39
【问题描述】:
我遇到了一些底部有页脚的网站,当我滚动到页脚上方的区域时,实际上会发生滚动。
要自动滚动这些页面,但我的代码目前的问题是它位于页面底部,我直接到达页脚,因此页脚正上方的滚动触发器不会被触发。
有没有办法达到同样的效果?
这是我目前正在从控制台执行的尝试:
(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
注意:与此类似的问题没有回答如何在页面的某个中间点滚动,而是直接将我带到页脚,所以这不是重复的
【问题讨论】:
-
没有这样直接的方法可以实现相同的效果,只需每次滚动到 windows-footer 的长度即可,这可能会起作用
-
你能提高这个问题的清晰度吗?这有点令人困惑,不太了解您想要实现的目标。也许添加一个描述性的例子。
-
简单来说,首先访问我提到的那个网站,尝试滚动它,你会发现每次滚动都会加载数据。现在我只需要使用 javascript 代码做同样的事情。
-
问题是我的代码仅在用户滚动到底部时触发滚动时才有效,但在我的情况下,滚动在页脚上方的中间触发
标签: javascript html selenium scroll dom-events