2014-10-20 5 views
14

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

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

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

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

+0

Вы искали window.scrollTo или window.scroll? –

+0

Да, я искал их, и они появляются, но ни одна из них не предназначена для страницы, на которой я нахожусь. –

+0

Возможно, вы сможете увидеть его с визуальным событием http://www.sprymedia.co.uk/article/visual+event –

ответ

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.

+0

Я сбросил эту строку отладчика в консоли, и ничего не получилось, когда я нажал кнопку прокрутки. –

+0

@Josh Попробовали ли вы заменить методы 'scroll',' scrollTo' и 'scrollBy'? –

+0

Пробовал определять все геттеры и не видел вывод в консоли ... Используя Chrome (последний). Когда я вывожу функцию def в консоли (т. Е. Введите имя fn и Enter), я вижу новый fn def. Вызов 'scroll', например, вызывает 2 ошибки:' window.прокручивать поглотитель: Ошибка в : 3: 42 в : 1: 1 window.scroll геттер: Ошибка в : 5: 44 в : 1: 1' – seebiscuit

4

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

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

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

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

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