Javascript 如何模拟用户单击滚动导航
我正在更新这个问题,使之更符合我现在发现的需求 之前,我使用Javascript 如何模拟用户单击滚动导航,javascript,python,user-interface,scroll,Javascript,Python,User Interface,Scroll,我正在更新这个问题,使之更符合我现在发现的需求 之前,我使用setintervalTimer创建了一个滚动事件,使用window.scrollTo,这不是一个选项,因为页面上当前运行的JavaScript导致滚动非常缓慢 这可能吗 我希望通过模拟用户点击浏览器滚动条并将其拖到页面底部,找到一种与浏览器交互的方法。这是为了屏幕记录整个网站及其所有互动 如果有其他方法可以实现这一点(请记住JS现在不是性能选项),那么请让我知道 谢谢- Wally我认为没有办法模拟用户单击滚动条,但有一种本地java
setintervalTimer
创建了一个滚动事件,使用window.scrollTo
,这不是一个选项,因为页面上当前运行的JavaScript导致滚动非常缓慢
这可能吗
Wally我认为没有办法模拟用户单击滚动条,但有一种本地javascript方法可以平滑滚动 如果要滚动到页面上的特定y坐标或x坐标,请使用以下选项:
// "Top" is y-coordinate
// "Left is x-coordinate
window.scroll({
top: 100,
left: 0,
behavior: 'smooth'
});
window.scrollBy({
top: 100, // could be negative
left: 0,
behavior: 'smooth'
});
document.querySelector('.exampleElement').scrollIntoView({
behavior: 'smooth'
});
或者,如果您想从现有位置滚动一定数量,您可以使用:
// "Top" is y-coordinate
// "Left is x-coordinate
window.scroll({
top: 100,
left: 0,
behavior: 'smooth'
});
window.scrollBy({
top: 100, // could be negative
left: 0,
behavior: 'smooth'
});
document.querySelector('.exampleElement').scrollIntoView({
behavior: 'smooth'
});
最后,如果您想滚动到某个HTML5元素,可以使用:
// "Top" is y-coordinate
// "Left is x-coordinate
window.scroll({
top: 100,
left: 0,
behavior: 'smooth'
});
window.scrollBy({
top: 100, // could be negative
left: 0,
behavior: 'smooth'
});
document.querySelector('.exampleElement').scrollIntoView({
behavior: 'smooth'
});
下面是一个示例(例如,我正在使用一系列换行符使页面可滚动):
document.querySelector('#here').scrollIntoView({
行为:“平滑”
});代码>
不在这里!
这里代码>可能是因为您使用的是平滑滚动行为,但您每50毫秒左右调用一次:可能速度太快,以至于之前的滚动动画尚未完成。同时,屏幕录制将是CPU密集型的,当然可能会导致帧丢失。一些屏幕录制软件甚至可能会限制帧速率,以避免对性能造成太大影响。令人遗憾的是,禁用平滑滚动并没有提高性能-您是对的,通过间隔计时器多次调用滚动会导致性能滞后,这正是我试图解决的问题。我试图找到(但没有找到)的一个选项是使用window.scroll,因为您已经添加了一个Python标记,所以如果您想使用它来实现一个解决方案,您可以非常轻松地使用Python来控制鼠标移动。我会检查一下,看看是否有帮助。我敢打赌,除非你愿意投入更多的精力,否则你需要滚动条始终位于同一位置,并将这些位置硬编码到脚本中。如果你需要我写一个详细的解决方案,让我知道,如果你自己编码有困难的话。我很难理解为什么你说js不是一个选项。通过js滚动页面非常简单,而且一点也不昂贵-您是否有大量滚动事件侦听器或代码导致在滚动上重新绘制?只需使用滚轮(鼠标)滚动即可。非常感谢您的想法,很遗憾,正如我在问题中提到的,由于其单线程调用堆栈的性质,JS目前不是性能选项。这是一个好主意,我已经尝试以某种方式实现了它-您应该注意,此选项确实适用于平滑滚动,但没有考虑滚动到页面底部的时间量,即您无法控制到达页面底部的秒数-这可以通过创建间隔来解决计时器,每几毫秒启动一次滚动几个像素,但这是资源密集型的。