Chrome запоминает положение прокрутки

Я столкнулся с проблемой, которая на самом деле является" функцией " в Chrome. Как большинство из вас может знать, Chrome запоминает позицию прокрутки, в которую он возвращается, когда вы возвращаетесь на страницу. И у меня с этим проблемы.

есть ли способ переопределить это без уведомления Пользователя?

Mees

не удалось попробовать-аутов:

  • ScrollTop на документ.готов

5 ответов


Я проверил chrome, он работал хорошо. Иногда setTimeout делает трюк :)

<script type="text/javascript">
window.onload=function(){
    setTimeout(function(){
        scrollTo(0,-1);
    },0);
}
</script>

в Chrome 46 + поведение автоматической прокрутки можно отключить с помощью истории.scrollRestoration:

if ('scrollRestoration' in history) {
  history.scrollRestoration = 'manual';
}

источник: https://developers.google.com/web/updates/2015/09/history-api-scroll-restoration


x = 0;  //horizontal coord
y = document.height; //vertical coord
window.scroll(x,y);

некоторые Javascript, как это может быть очень хорошо можно манипулировать, чтобы остановить автоматическую прокрутку.

Это зависит от того, счастливы ли вы, что прокрутка будет просто установлена для автоматического перехода к вершине, или вы на самом деле ищете стандартную опцию Chrome, чтобы взять страницу в последнюю позицию прокрутки, чтобы полностью отключить?

что вы в настоящее время пытаетесь использовать для scrollTop()?


Я решил это, присоединившись к событию прокрутки, а затем сбросив положение прокрутки при первом прокрутке пользователя. Работает для перезагрузки на месте для меня.

выглядит так:

var scrollResetOnce = false;
$(window).on("scroll", function() {
    if (scrollResetOnce) return;
    scrollResetOnce = true;
    scrollTo(0, -1);
});

вот чистый способ сделать это.

window.addEventListener('unload', function(e){
   document.body.style.display = 'none';
});

просто установив отображение тела в "Нет", вам не нужно беспокоиться о вспышке прокрутки браузера в верхней части страницы, прежде чем она будет выгружена, и положение прокрутки автоматически будет сброшено до 0.