Buduję stronę internetową, którą publikuję z div
s. Kiedy odświeżam stronę po przewinięciu do pozycji X, strona jest ładowana z pozycją przewijania X.
Jak wymusić przewijanie strony do góry podczas odświeżania strony?
To, co przychodzi mi do głowy, to niektóre JS lub jQuery uruchomione jako
onLoad()
funkcja strony, aby ustawić przewijanie stron do góry. Ale nie wiem, jak mogłem to zrobić.Lepszą opcją byłoby, gdyby istniała jakaś właściwość lub coś, co powoduje, że strona jest ładowana z domyślną pozycją przewijania (tj. Na górze), co będzie przypominało ładowanie strony , zamiast jej odświeżania .
javascript
jquery
html
pageload
page-refresh
Księżyc
źródło
źródło
Odpowiedzi:
Możesz to zrobić za pomocą metody scrollTop na DOM ready :
$(document).ready(function(){ $(this).scrollTop(0); });
źródło
Aby uzyskać prostą implementację zwykłego JavaScript:
window.onbeforeunload = function () { window.scrollTo(0, 0); }
źródło
Safari 11.0.3
i dla mnie działa dobrze, którego używasz?return
?document.querySelector('html').style.scrollBehavior = '';
może być konieczne. Jeśli był ustawiony nasmooth
, może nie dotrzeć na początek strony przed ponownym załadowaniem strony.Odpowiedź tutaj nie działa dla safari, dokument. Często jest już odpalany zbyt wcześnie.
Powinien użyć
beforeunload
zdarzenia, które uniemożliwia ci jakąś formęsetTimeout
$(window).on('beforeunload', function(){ $(window).scrollTop(0); });
źródło
Ponownie, najlepszą odpowiedzią jest:
window.onbeforeunload = function () { window.scrollTo(0,0); };
(to jest dla innych niż jQuery, sprawdź, jeśli szukasz metody JQ)
EDYCJA: mały błąd to "onbeforunload" :) Chrome i inne przeglądarki "zapamiętują" ostatnią pozycję przewijania przed wyładowaniem, więc jeśli ustawisz wartość na 0,0 tuż przed wyładowaniem strony, zapamiętają 0,0 i wygrają nie przewijaj z powrotem do miejsca, w którym był pasek przewijania :)
źródło
document.documentElement.scrollTop
do działania. Zwykle używam obu.Sprawdź tutaj
.scrollTop()
funkcję jQueryWyglądałoby to jakoś
$(document).load().scrollTop(0);
źródło
Możesz też spróbować
$(document).ready(function(){ $(window).scrollTop(0); });
Jeśli chcesz przewijać w pozycji x, możesz zmienić wartość z 0 na x.
źródło
Zamiast tego
location.reload()
po prostu użyjlocation.href = location.href
. Nie przejdzie do poprzedniej pozycji, tak jak tolocation.reload()
robi.Uwaga: nie załaduje się ponownie, jeśli w adresie URL będzie #
źródło
Aby zresetować okno przewiń z powrotem do góry,
$(window).scrollTop(0)
w zdarzeniu beforeunload robi się sztuczki, jednak testowałem w Chrome 80, po ponownym załadowaniu wróci do starej lokalizacji.Aby temu zapobiec, ustaw opcję
history.scrollRestoration
na"manual"
.//Reset scroll top history.scrollRestoration = "manual"; $(window).on('beforeunload', function(){ $(window).scrollTop(0); });
źródło
<script> location.hash = (location.hash) ? location.hash : " "; </script>
Powyższy skrypt
<head>
umieść w tagu swojego html. Nie jestem pewien, jak zachowują się aplikacje na jednej stronie! Ale na pewno działa jak urok na zwykłych stronach.źródło
Odpowiedź tutaj (przewijanie
$(document).ready
) nie działa, jeśli na stronie jest wideo. W takim przypadku strona jest przewijana po uruchomieniu tego zdarzenia, nadpisując naszą pracę.Najlepsza odpowiedź powinna brzmieć:
$(window).on('beforeunload', function(){ $(window).scrollTop(0); });
źródło
$(document).ready(function(){ $(window).scrollTop(0); });
nie działało dla mnie, ponieważ Google Chrome po prostu przewijał się w dół po zakończeniu ładowania strony. To, czego użyłem, było
$(document).ready(function() { var url = window.location.href; console.log(url); if( url.indexOf('#') < 0 ) { window.location.replace(url + "#"); } else { window.location.replace(url); } });
// To ładuje stronę z # na końcu. Więc zawsze ładuje się na górze.
źródło
Superkalifragilistyczno-ekspercka odpowiedź brzmi:
dodaj to na początku pliku js lub tagu skryptu
document.documentElement.scrollTop = 0; // For Chrome, Firefox, IE and Opera document.body.scrollTop = 0; // For Safari
źródło
Jest to jeden z najlepszych sposobów:
<script> $(window).on('beforeunload', function() { $('body').hide(); $(window).scrollTop(0); }); </script>
źródło