Сбросить положение прокрутки при обновлении страницы, не работает в современных браузерах

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

Код:

$(window).on('beforeunload', function() {
$('html, body').scrollTop($('#scroll-to-div-id-anchor').offset().top); });

Может быть, я неправильно обрабатываю это, и есть другой способ добиться этого?

Я перепробовал все вариации и возможные варианты этого кода, но он не работал в Safari и Chrome (как на десктопе, так и, тем более, на мобильном).


person Community    schedule 28.08.2018    source источник
comment
Вы пытаетесь сбросить его на 0 или какое-то конкретное значение?   -  person Serg Chernata    schedule 28.08.2018
comment
Я пытаюсь сбросить его на якорь (идентификатор div) @SergChernata, но я также пытался сбросить на «0»   -  person    schedule 28.08.2018


Ответы (1)


Если вы хотите, чтобы страница перемещалась к определенному элементу при перезагрузке, ожидаемое поведение состоит в том, чтобы переместить страницу в эту точку после ее загрузки. Если вы попытались переместить страницу до того, как она была загружена, вы не будете знать, куда вам нужно прокрутить, и если вы попытались переместить ее при выгрузке, не гарантируется, что эта точка будет сохранена после перезагрузки.

Вероятно, вы можете сохранить местоположение прокрутки в localStorage при выгрузке и попытаться загрузить местоположение. onload, но в этом случае я бы рекомендовал просто переместить страницу onload.

$(document).ready(function() {
  $('html, body').scrollTop($('#scroll-to-div-id-anchor').offset().top);
});

person Chase Ingebritson    schedule 28.08.2018
comment
Этого не произойдет при загрузке, потому что браузер сохраняет конечную позицию (и восстанавливает ее после перезагрузки) в тот момент, когда пользователь нажимает кнопку перезагрузки @Chase I - person ; 28.08.2018
comment
@AndrewK Это должно работать нормально, если вы обязательно запустите изменение после загрузки документа. Можете ли вы включить свой HTML и пример реализации, где этот ответ не работает? - person Chase Ingebritson; 28.08.2018
comment
Именно в этом дело, просто этого не произошло, не знаю почему, даже на «пустой» тестовой странице при перезагрузке позиция остается прежней, а не восстанавливается до исходной, как можно было ожидать из кода ( Сафари/Хром). @Chase I, проверено на пустой тестовой странице, я могу добавить html позже, сейчас на мобильном телефоне - person ; 28.08.2018
comment
Окей, звучит хорошо. Этот ответ также может иметь некоторые достоинства, но я не У вас нет среды, настроенной для проведения тестирования. - person Chase Ingebritson; 28.08.2018