Перезагрузить браузер не сбрасывает страницу вверх
Я думал, когда вы нажали кнопку "Обновить", браузер должен был сбросить вашу страницу наверх? Я использую js
аккордеон, и когда я обновляюсь, он закрывает аккордеон, но не перемещает страницу вверх.
4 ответа
Ну, как видите, это не так:)
Но вы можете форсировать это с помощью простого jQuery:
$(document).ready(function(){
$(this).scrollTop(0);
});
РЕДАКТИРОВАТЬ:
Единственный способ, который работает в IE 9, FF 12 и Chrome 20.0, заключается в следующем:
$(document).ready(function(){
$('html').animate({scrollTop:0}, 1);
$('body').animate({scrollTop:0}, 1);
});
Странно то, что когда я пытался прокрутить элементы напрямую, без применения анимации (то есть $('html').scrollTop(0)
), это не сработало. Поскольку длительность установлена в 1 миллисекунду, пользователь ничего не заметит.
Я был бы рад, если бы кто-то мог пролить свет на это - почему прокрутка работает только с анимацией?
Попробуйте, если ничего из вышеперечисленного не сработало. Это заставит браузер думать, что он был вверху документа перед обновлением.
$(window).on('beforeunload', function() {
$(window).scrollTop(0);
});
Браузер прокручивает вниз до того места, где вы были до перезагрузки, в попытке сделать это удобнее. Это действительно полезно только для чрезмерно длинных страниц.
Вы можете "исправить" это так:
window.onload = function() {document.body.scrollTop = document.documentElement.scrollTop = 0;};
На основании последнего комментария от comonpyke и собственных тестов я рекомендую
$(document).ready(function(){
$('html, body').scrollTop(0);
$(window).on('load', function() {
setTimeout(function(){
$('html, body').scrollTop(0);
}, 0);
});
});
- Первая прокрутка
- после того, как документ готов
- Второй scrollTop прокручивается поздно
- после загрузки событие
- и после тайм-аута
- после загрузки событие