Перезагрузить браузер не сбрасывает страницу вверх

Я думал, когда вы нажали кнопку "Обновить", браузер должен был сбросить вашу страницу наверх? Я использую js аккордеон, и когда я обновляюсь, он закрывает аккордеон, но не перемещает страницу вверх.

http://imip.rvadv.com/index3.html

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 прокручивается поздно
    • после загрузки событие
      • и после тайм-аута
Другие вопросы по тегам