Odświeżanie strony w JavaScript: location.reload()

Odświeżanie strony w JavaScript

JavaScript location.reload(): jak poprawnie odświeżyć stronę | We.Inc

Odśwież stronę przez location.reload(), porównaj to z history.go(0), replace i meta refresh, wygeneruj kod odświeżania w odstępach czasu i dowiedz się, co naprawdę robi reload(true).

Wywołaj location.reload(), aby przeładować bieżącą stronę dokładnie tak, jak robi to przycisk odświeżania w przeglądarce. Nie przyjmuje standardowych argumentów. Stara forma reload(true), mająca pomijać cache, to niestandardowy parametr, który według MDN działa tylko w Firefox, więc inne przeglądarki ignorują true. history.go(0) również przeładowuje stronę.

Sposoby odświeżenia lub zmiany strony

Przeładowanie to jedna linia kodu, ale powody, dla których ludzie po nie sięgają, są różne: pobranie nowych danych, zresetowanie zablokowanego stanu, odświeżanie dashboardu co jakiś czas albo wymuszenie nowej wersji strony. Ten poradnik pokazuje standardowe wywołanie, co naprawdę robią starsze warianty i jak całkowicie uniknąć przeładowania, gdy wystarczy pobrać świeże dane.

Najczęściej zadawane pytania

Czy location.reload(true) czyści cache?

Nie w niezawodny sposób. Argument forceGet nie jest częścią standardu HTML, a MDN zaznacza, że obsługuje go tylko Firefox. Inne przeglądarki go ignorują i wykonują zwykłe przeładowanie. Aby mieć pewność, że ludzie dostaną nowe pliki, wersjonuj adresy URL zasobów lub ustaw właściwe nagłówki Cache-Control.

Czym różni się location.reload() od location.href = location.href?

reload() zawsze przeładowuje bieżący dokument. Przypisanie href rozpoczyna nawigację do tego adresu URL, a gdy URL zawiera #fragment, przeglądarka tylko przewija do fragmentu, więc nic się nie przeładowuje. Używaj reload(), gdy chcesz przeładowania.

Jak odświeżać stronę co 30 sekund?

Bez skryptu dodaj <meta http-equiv="refresh" content="30"> do sekcji head. Ze skryptem użyj setTimeout(() => location.reload(), 30000). Z automatycznego odświeżania korzystaj oszczędnie: MDN ostrzega, że nieoczekiwane odświeżenia mogą dezorientować ludzi i kolidować z wytycznymi WCAG dotyczącymi limitów czasu.

Czy skrypt może przeładować stronę z innej witryny?

Nie. Wywołanie reload na Location innego originu rzuca SecurityError DOMException, więc skrypt w iframe z innej witryny nie może w ten sposób przeładować strony nadrzędnej, a strona nadrzędna nie może przeładować jego.

Jak przeładować stronę tylko raz?

Zaznacz, że przeładowanie już nastąpiło, na przykład flagą w sessionStorage lub parametrem zapytania, takim jak ?r=1, i sprawdzaj to przed wywołaniem reload. Bez takiego zabezpieczenia kod, który przeładowuje przy ładowaniu, tworzy nieskończoną pętlę.

Przeładowanie a pobranie świeżych danych

Dlaczego przeładowanie może nadal pokazywać stare pliki

Kod przeładowania do wklejenia

Przycisk przeładowania

Handler kliknięcia wywołuje standardowe przeładowanie bez argumentu.

Odświeżanie co jakiś czas, ale tylko gdy karta jest widoczna

Ukryte karty są pomijane, a karta, która wraca po upływie interwału, przeładowuje się od razu.

Przeładowanie dokładnie raz

Flaga w sessionStorage przetrwa przeładowanie w tej samej karcie, więc drugie ładowanie je pomija.

Ostrzeżenie przed przeładowaniem przy niezapisanych zmianach

Przeglądarki pokazują okno dopiero po tym, jak osoba wejdzie w interakcję ze stroną, i używają własnego tekstu.

Generator kodu odświeżania

Wybierz, jak i jak często strona ma się odświeżać, a potem skopiuj fragment kodu.

Metoda

Przeładuj teraz

Timer JavaScript

Timer, tylko widoczna karta

HTML meta refresh

Co {n} sekund

Fragment kodu

Wypróbuj na tej stronie

location.reload()

history.go(0)

Oba przyciski przeładowują tę stronę. Wszystko, co wpisano powyżej, zostanie utracone.

Zacznij za darmo · Bez karty kredytowej

Powiązane: Poradniki

Produkt

Dla kogo

Funkcje

Zasoby

Firma

Mapa strony