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

Javascript 是否可以找到导致页面滚动的功能,javascript,html,debugging,Javascript,Html,Debugging,我试图找到哪个函数在悬停某个元素时导致页面滚动,但到目前为止我什么也没有得到 没有特定的监听器连接到元素,据我所知,它是通过鼠标盖监听器或类似的方式触发的,元素包含许多附加到它们的监听器 另外,这不是一个浏览器函数,它是特定于javascript的,因为当我将大部分代码设置为null时,它不会出现 我已经尝试了nulling我知道的滚动方法,例如: [ 'scroll', 'scrollTo', 'scrollBy', 'scrollByLines', '

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

没有特定的监听器连接到元素,据我所知,它是通过
鼠标盖
监听器或类似的方式触发的,元素包含许多附加到它们的监听器

另外,这不是一个浏览器函数,它是特定于javascript的,因为当我将大部分代码设置为null时,它不会出现

我已经尝试了
null
ing我知道的滚动方法,例如:

[
    'scroll',
    'scrollTo',
    'scrollBy',
    'scrollByLines',
    'scrollByPages',
    'scrollX',
    'scrollY',
    'scrollMaxX',
    'scrollMaxY',
    'scrollHeight',
    'scrollIntoView',
    'scrollTop',
    'scrollTopMax'
].forEach(function(a) {
    window[a] = null;
    document.documentElement[a] = null;
})
希望当神秘函数试图调用scroll方法时,它会抛出一个错误,但是它仍然可以正常滚动,没有任何问题

我还尝试了监听scroll事件,但没有返回参数使我更接近负责的函数

我曾尝试在缩小的源代码中查找它,但通用的
scroll
搜索返回266个结果,我甚至不确定它是否使用了典型的scroll方法

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

将鼠标悬停在我的上方,它会向下滚动页面
<div onmouseover="scrollWin()">Hover over me and it scrolls down the page</div>
<p>You will need stuff here to see the scroll work</p>
<script>
function scrollWin() {
    window.scrollBy(0, 100);
}
</script>
你需要在这里的东西来查看滚动工作

函数scrollWin(){ 滚动窗口(0,100); }
在尝试寻找这个神秘函数的3天之后,在第二次发布相同的问题后,我发现导致页面滚动的函数最终是
.focus()
函数。我很久以前就记得它了,但自从我了解它之后就再也没有使用过它,而且它不容易与所有其他滚动功能联系起来,这让我很难过


谢谢你们所有的人都想参与进来。希望将来有人会发现这一点有用。

我们最近在应用程序中遇到了一个非常类似的意外滚动,并最终缩小了Modernizer CSS连字符功能检测的罪魁祸首

错误报告如下:


与您的情况一样,滚动是由对.focus()的调用引起的,因此它避开了我们最初对不需要的“滚动”代码调用的搜索。

在2020年,转到Chrome的开发工具,
Sources
选项卡,在右侧窗格中,滚动到最底部以查找
事件侦听器断点

您将在
控件
组中找到
滚动
。每当触发scroll事件时,单击该复选框将停止执行(它是一个断点),并且您将能够在同一窗格(右侧)中的
调用堆栈
组下跟踪执行该操作的代码(可能是调试器启动后右窗格中的第一个组)


找到鼠标悬停事件的来源并检查此功能。还可以尝试使用以下内容来运行处理程序:
getEventListeners(document.querySelector('.link')
@dfsq鼠标盖处理许多其他功能,所有这些元素都缩小了,我已经解释过元素有很多监听器连接到它们。@vsync之所以会滚动页面,是因为我可以清楚地看到页面移动,如果我将监听器连接到窗口,就会发生滚动事件。即使有数百个监听器,也可以使用getEventListeners将它们全部列出。@dfsq什么我能处理这么多的侦听器吗?这些侦听器会导致更多的调用堆栈,其中大多数由
.call()
.apply()
分发?它最终将与逐行调试整个代码一样。您必须创建函数,在本例中是scrollWin(),如果您可以编辑您的答案,并解释您显示的代码的功能,以及该代码为什么/如何回答问题,这会使你的答案更有帮助。这个答案与我问的问题完全无关。我想发现(调试可能是一个更好的词)哪个函数负责页面滚动,而不是创建一个新函数。在问题的开头,我清楚地说:“我正在尝试查找导致页面滚动的函数…”,
find
-而不是
create
make
。连标题本身都很清楚,这个怎么样。您想知道哪个函数负责页面滚动?在哪一页?如果我知道的话,它可能是内容附加,也许你没有真正看到一个卷轴。您的第一句话清楚地表明您正在试图找到一个创建页面滚动的函数。我给了你一个例子,一个如何使用它的例子。另外,也许可以尝试搜索其他可能性,如jquery:您没有正确阅读内容,我清楚地说“我正在尝试查找导致页面滚动的函数”而不是“尝试创建导致页面滚动的函数”。在我的整个问题中,我从来没有要求创建任何滚动页面的函数,我试图找到负责滚动我正在学习的页面的函数,我已经说过它实际上是一个页面滚动,因为当我向同一事件添加侦听器时,它会触发“滚动”事件。请停止建议我创建更多的滚动函数,甚至使用无用的库。谢谢!在我的例子中,我使用的是一个遗留WebForms应用程序,由于
表单
元素上的
DefaultFocus
属性,页面被滚动到顶部:……这会停止“scroll”事件的执行,但触发该事件的跟踪丢失,因此没有帮助。您只能看到运行javascript线程的当前堆栈跟踪,但如果设置body.scrollTop=0,则表明javascript已消失,并且在列表中不再可见。正如@elixon所说,这无助于查找scroll事件的源。