我试图找到哪个函数在悬停元素时导致页面滚动,但到目前为止我什么都没有。
没有特定的侦听器附加到该元素,从我可以理解的是通过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;
})
希望当神秘函数试图调用scroll方法时会抛出错误,但它仍然会正常滚动而没有任何问题。
我也尝试过听滚动事件,但没有返回的参数让我更接近责任函数。
我尝试在缩小的源代码中查找它,但常见的scroll
搜索返回266个结果,我甚至不确定它是否使用典型的滚动方法。
有没有办法找到使页面滚动的功能?
答案 0 :(得分:3)
在尝试找到这个神秘功能3天之后,第二次发布相同问题后,我找到了导致页面滚动的功能,最终成为.focus()
功能。我记得它很久以前,但是因为我从来没有使用它,因为我了解它并且它与其他所有滚动功能相关并不容易,这给我带来了困难。
感谢所有试图参与其中的人。希望将来其他人会觉得这很有用。
答案 1 :(得分:2)
2019年,转到Chrome的开发工具的Sources
标签,然后在右侧窗格中滚动到最底部以找到Event Listener Breakpoints
。
在scroll
组中可以找到Control
。每当滚动事件被触发时,单击复选框将停止执行(这是一个断点),并且您可以在Call Stack
组下的同一窗格(右侧)中找到执行此操作的代码(它可能是调试器启动后右侧窗格中的第一组)。
答案 2 :(得分:0)
我们最近在应用程序中遇到了非常相似的意外滚动,最终将罪魁祸首缩小为Modernizr的CSS连字符功能检测。
错误报告在这里: https://github.com/Modernizr/Modernizr/issues/2172
在您的情况下,滚动是由对.focus()的调用引起的,因此它避免了我们最初对不需要的“滚动”代码调用的搜索。
答案 3 :(得分:-3)
<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>