Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何模拟用户单击滚动导航_Javascript_Python_User Interface_Scroll - Fatal编程技术网

Javascript 如何模拟用户单击滚动导航

Javascript 如何模拟用户单击滚动导航,javascript,python,user-interface,scroll,Javascript,Python,User Interface,Scroll,我正在更新这个问题,使之更符合我现在发现的需求 之前,我使用setintervalTimer创建了一个滚动事件,使用window.scrollTo,这不是一个选项,因为页面上当前运行的JavaScript导致滚动非常缓慢 这可能吗 我希望通过模拟用户点击浏览器滚动条并将其拖到页面底部,找到一种与浏览器交互的方法。这是为了屏幕记录整个网站及其所有互动 如果有其他方法可以实现这一点(请记住JS现在不是性能选项),那么请让我知道 谢谢- Wally我认为没有办法模拟用户单击滚动条,但有一种本地java

我正在更新这个问题,使之更符合我现在发现的需求

之前,我使用
setintervalTimer
创建了一个滚动事件,使用
window.scrollTo
,这不是一个选项,因为页面上当前运行的JavaScript导致滚动非常缓慢

这可能吗

  • 我希望通过模拟用户点击浏览器滚动条并将其拖到页面底部,找到一种与浏览器交互的方法。这是为了屏幕记录整个网站及其所有互动
  • 如果有其他方法可以实现这一点(请记住JS现在不是性能选项),那么请让我知道

    谢谢-
    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目前不是性能选项。这是一个好主意,我已经尝试以某种方式实现了它-您应该注意,此选项确实适用于平滑滚动,但没有考虑滚动到页面底部的时间量,即您无法控制到达页面底部的秒数-这可以通过创建间隔来解决计时器,每几毫秒启动一次滚动几个像素,但这是资源密集型的。