是否可以找到导致页面滚动的功能

Sha*_*dow 7 html javascript debugging

我试图找到哪个函数导致页面在悬停元素时滚动,但到目前为止我什么也没得到.

没有特定的侦听器附加到元素,从我可以理解它通过mouseover侦听器或类似物触发,元素包含许多附加到它们的侦听器.

这也不是一个浏览器功能,它特定于javascript,因为当我将大部分代码置空时它不会发生.

我已经尝试过如下null所知的滚动方法:

[
    'scroll',
    'scrollTo',
    'scrollBy',
    'scrollByLines',
    'scrollByPages',
    'scrollX',
    'scrollY',
    'scrollMaxX',
    'scrollMaxY',
    'scrollHeight',
    'scrollIntoView',
    'scrollTop',
    'scrollTopMax'
].forEach(function(a) {
    window[a] = null;
    document.documentElement[a] = null;
})
Run Code Online (Sandbox Code Playgroud)

希望当神秘函数试图调用scroll方法时它会抛出一个错误,但它仍然正常滚动没有任何问题.

我也尝试过听滚动事件,但没有返回的参数让我更接近负责任的功能.

我试过在缩小的源代码中寻找它,但常见的scroll搜索返回266结果,我甚至不确定它是否使用典型的滚动方法.

有什么方法可以找到使页面滚动的功能吗?

Sha*_*dow 6

在尝试找到这个神秘功能的 3 天后,它在第二次发布相同的问题后找到了我,导致页面滚动的.focus()功能最终成为该功能。我很久以前就记得它,但是自从我知道它之后我就再也没有使用过它,而且它不容易与所有其他滚动功能相关联,这让我很难受。

感谢所有试图参与其中的人。希望未来的其他人会发现这很有用。


san*_*e89 5

在2019年,转到Chrome的开发工具Sources选项卡,然后在右窗格中滚动到最底部以查找Event Listener Breakpoints

您会scrollControl小组内部找到。每当滚动事件被触发时,单击复选框将停止执行(这是一个断点),您将能够在Call Stack组(可能是第一组)下的同一窗格(右侧)中找到执行此操作的代码。在调试器启动后,在右窗格中)。

在此处输入图片说明

  • 正如 @elixon 所说,这无助于找到滚动事件的来源。 (3认同)
  • 这会停止“滚动”事件的执行,但触发它的跟踪会丢失,因此没有帮助。您只能看到正在运行的 javascript 线程的当前堆栈跟踪,但如果设置了 body.scrollTop=0,则 javascript 就会消失并且不再在列表中可见。 (2认同)