В браузере прокручивается окно

В Chrome Devtools вы можете поменять javascript на изменение атрибутов элемента DOM или на модификации поддерева элемента.

Я работаю над некоторым устаревшим кодом, в котором есть некоторые javascript, который прокручивается вверху страницы в определенных ситуациях, и я хочу найти JS, который это делает.

Есть ли способ, в Devtools, перерыв в событиях прокрутки?

Это может быть jQuery или Prototype.js или база событий JS, которая делает это, и я искал базу кода для .scrollTop или .animate, и я нашел много таких, но ни один из них не вызывает моей проблемы.

Ответы

Ответ 1

У меня нет никакого дополнительного представления о том, что произошло, чем те, которые были представлены.

Но я подозреваю, что это не прокрутка, которая вызывает проблему, но "#" в html.

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

- очень распространенная картина. когда вы забудете (или что-то предотвратите) "return false", будет перемещен # (пустой анкер), что приведет к тому, что прокрутка будет вверх.

Проверьте, имеет ли URL-адрес в конце после нажатия кнопки!

Ответ 2

Вы можете ввести эту строку JS с помощью консоли, чтобы запустить отладчик, когда положение прокрутки изменяется программно.

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

Затем просмотрите стек вызовов, чтобы узнать, что вызвало его.

Если вы не хотите активировать отладчик, вы можете распечатать трассировку стека istead со следующим кодом:

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

Другим вариантом является замена методов scroll, scrollTo и scrollBy на свои собственные.

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

Повторите для scrollTo и scrollBy.