Я подумал, когда вы нажали «Обновить», что браузер должен был сбросить вашу страницу вверх? Я использую аккордеон 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 миллисекунду, пользователь ничего не заметит.
Я был бы рад, если бы кто-нибудь мог пролить свет на это - почему прокрутка работает только с анимацией?
setTimeout(...,0)
. Это может быть то, что делает ваш animate (). Итак $(window).on('load',function() {setTimeout(function () { $('html,body').scrollTop(0) },0); });
- person commonpike; 26.02.2014
Попробуйте это, если ничего из вышеперечисленного не помогло. Это заставит браузер думать, что он был вверху документа перед обновлением.
$(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);
});
});
- First scrollTop scrolls early
- after document ready
- Second scrollTop scrolls late
- after load event
- and after timeout
- after load event