В браузере прокручивается окно
В 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
.