在浏览器中,中断窗口滚动

时间:2014-10-20 19:36:05

标签: javascript jquery scroll prototype google-chrome-devtools

在Chrome Devtools中,您可以在更改DOM元素的属性或元素的子树修改时中断javascript。

我正在处理一些遗留代码,这些代码在某些情况下会有一些javascript滚动到页面顶部,我想找到执行此操作的JS。

在Devtools中有没有办法让滚动事件中断?

它可能是jQuery或Prototype.js或事件库JS,它已经搜索了.scrollTop或.animate的代码库,我发现了很多这些,但没有一个是导致我的问题。

2 个答案:

答案 0 :(得分:5)

我对实际破坏没有其他想法。

但我怀疑它不会滚动导致问题,但是#'#'在html。

<a href="#" onclick="return false;">x</a>

是一种非常常见的模式。当你忘记(或者某些东西阻止)&#34;返回false&#34;时,#(空锚)将被导航到,这会导致滚动到顶部。

点击后检查网址末尾是否有#。

答案 1 :(得分:2)

当滚动位置以编程方式更改时,您可以使用控制台注入此行JS来触发调试器。

window.__defineSetter__("pageYOffset", function(){
    debugger;
});

然后,查看调用堆栈以查看触发它的内容。

如果您不想激活调试器,可以使用以下代码打印堆栈跟踪:

window.__defineSetter__("pageYOffset", function(){
    console.log(new Error().stack);
});

另一种选择是用您自己的方法替换Windows scrollscrollToscrollBy方法。

window.__defineGetter__('scroll', function(){
  console.log('window.scroll getter :' + new Error().stack);
  return function(x,y){
    debugger; //or print stack trace
    oldScroll(x,y);
  }
});

重复scrollToscrollBy

相关问题