На моей работе у нас есть сайт с одной страницей, который я создал с помощью AngularJS.
Мы используем плагин ui-router (версия 0.2.0).
Недавно я заметил, что при переходе из одного состояния в другое окно не прокручивается вверх.
Я даже попытался прокрутить его вверх, используя функцию jQuery scrollTop() при каждом изменении состояния (используя событие $stateChangeSuccess). Но это не сработало.
Итак, я начал расследование, и я заметил, что scrollTop() возвращает 0 для каждого элемента на странице.
Не только это, но когда я печатаю window.scrollY на консоли, я получаю 0 (независимо от того, где я нахожусь на странице). Не только в моем коде, но даже если я просто напишу его в консоли хром-инструментов.
Я написал несколько приложений с AngularJS и ui-router, и это происходит только в этом конкретном.
Я проверил, не перезаписал ли я функцию scrollTop() или даже поле window.scrollY, но ничего не нашел.
Я пробовал использовать ui-view с autoscroll="true" и autoscroll="false", но это не помогло.
Я также попытался предоставить элементы html и body height:100%, и я также попробовал это без него. Но ничего.
Я действительно не знаю, что делать дальше.
Я не смог воспроизвести проблему, но если вы считаете, что есть какой-либо код, который я должен опубликовать здесь, который может быть полезен, я буду рад сделать это.
Спасибо!
EDIT:
Я запустил эту функцию на консоли:
var l = $('*').length;
for(var i = 0; i < l; i++) {
var elem = $('*:eq(' + i + ')');
if(elem.scrollTop() > 0) {
console.log(elem, elem.scrollTop());
}
}
Функция напечатала только один элемент с его верхней прокруткой.
Элемент - это оберточный div, который содержит весь контент и основной вид (у меня есть вложенные представления в моем приложении).
Если я использую scrollTop(0) для этого элемента, я получаю то, что хотел, но он касается только симптома, а не реальной проблемы.