Jeśli dobrze pamiętam, ponownie window.location.reload()
ładuję bieżącą stronę danymi POST, window.location.href=window.location.href
ale nie zawiera danych POST.
Jak zauważył @ W3Max w komentarzach poniżej, window.location.href=window.location.href
nie przeładuje strony, jeśli w adresie URL jest kotwica (#) - Musisz użyćwindow.location.reload()
takim przypadku .
Ponadto, jak zauważył @Mic poniżej, window.location.reload()
bierze dodatkowy argument, skipCache
dzięki czemu przy użyciu window.location.reload(true)
przeglądarki pominie pamięć podręczną i ponownie załaduje stronę z serwera. window.location.reload(false)
zrobi odwrotnie i załaduje stronę z pamięci podręcznej, jeśli to możliwe.
Jeśli mówisz,
window.location.reload(true)
że przeglądarka pominie pamięć podręczną i ponownie załaduje stronę z serwera.window.location.reload(false)
zrobi odwrotnie.Uwaga:
default
wartość dlawindow.location.reload()
isfalse
źródło
window.location.href = window.location.href
zrobiłem.location.reload()
lublocation.reload(false)
. Aby wykonać pełne odświeżenie strony, użyjlocation.reload(true)
.Różnica jest taka
nie przeładuje strony, jeśli w adresie URL znajduje się skrót (#) (z lub bez czegoś po nim), natomiast
przeładuje stronę.
źródło
location.href = location.href
za coś oczywistego, ale właśnie zauważyłem to dokładne zachowanie i przyszedłem do SO, aby rozpowszechnić informacje.location.reload()
Zamiast tego użyj .window.location.replace(window.location.pathname);
Jeśli dodasz wartość logiczną true do przeładowania
window.location.reload(true)
, zostanie ona załadowana z serwera.Nie jest jasne, w jaki obsługiwany jest to logiczna, W3Org wspomina, że NS wykorzystywane do wspierania go
Może istnieć różnica między zawartością window.location.href i document.URL - przynajmniej kiedyś istniała różnica między location.href a niestandardową i nieaktualną lokalizacją document.lore, która miała związek z przekierowaniem, ale to to naprawdę ostatnie tysiąclecie.
Do celów dokumentacji użyłbym funkcji window.location.reload (), ponieważ właśnie to chcesz zrobić.
źródło
Jak powiedziano, modyfikacja href, gdy w adresie URL znajduje się skrót (#), nie spowoduje ponownego załadowania strony. Dlatego używam tego do przeładowania zamiast wyrażeń regularnych:
źródło
Spotykając się z tym pytaniem, badając niektóre nieprawidłowe zachowania w IE, szczególnie IE9, nie sprawdziłem starszych wersji. Wydaje się
powoduje odświeżenie, które na sekundę usuwa cały ekran, gdzie as
odświeża stronę znacznie szybciej, prawie niezauważalnie.
Przeprowadzając nieco więcej badań i eksperymentując ze skrzypkiem, wydaje się, że
window.location.reload()
obejdzie pamięć podręczną i przeładuje z serwera, niezależnie od tego, czy przekażesz z nią wartość logiczną, czy nie, obejmuje to uzyskanie wszystkich zasobów (obrazów, skryptów, arkuszy stylów, itp.) ponownie. Więc jeśli chcesz tylko, aby strona odświeżyła HTML,window.location = document.URL
powróci ona znacznie szybciej i przy mniejszym ruchu.Różnica w zachowaniu między przeglądarkami polega na tym, że gdy IE9 używa metody przeładowania, usuwa widoczną stronę i pozornie odbudowuje ją od zera, gdzie FF i chrome czekają, aż otrzymają nowe zasoby i odbudują je, jeśli są różne.
źródło
Różnica w Firefoksie (12.0) polega na tym, że na stronie renderowanej z POST reload () wyświetli ostrzeżenie i prześle ponownie, podczas gdy przypisanie adresu URL wykona GET.
Google Chrome robi GET dla obu.
źródło
Korzystając z JSF, mam teraz problem z odświeżaniem po zakończeniu sesji: PrimeFaces ViewExpiredException po przeładowaniu strony i po pewnym dochodzeniu znalazłem jedną różnicę w FireFox:
Wywołanie
window.location.reload()
działa jak kliknięcie ikony odświeżania na FF, dodaje linięCache-Control max-age=0
chociaż ustawienie
window.location.href
działa jak naciśnięcie ENTER w wierszu adresu URL, nie wysyła tego wiersza.Chociaż oba są wysyłane jako GET, pierwszy (przeładowanie) przywraca poprzednie dane, a aplikacja jest niespójna.
źródło
Nie, nie powinno być. Możliwe jest jednak, że istnieją różnice w niektórych przeglądarkach, więc albo (albo żadna) może nie działać w niektórych przypadkach.
źródło
z mojego około 3-letniego doświadczenia nie mogłem znaleźć żadnej różnicy ...
edit: tak, jak powiedział jeden z nich, tylko przekazanie parametru boolean do window.location.reload () jest różnicą. jeśli przekażesz true , przeglądarka ładuje świeżą stronę, ale jeśli false , ładowana jest wersja pamięci podręcznej ...
źródło
W naszym przypadku chcemy po prostu ponownie załadować stronę w widoku internetowym iz kilku powodów nie mogliśmy dowiedzieć się, dlaczego! Wypróbowujemy prawie każde rozwiązanie, które było w sieci, ale utknęliśmy bez przeładowywania za pomocą location.reload () lub alternatywnych rozwiązań, takich jak window.location.reload (), location.reload (true), ...!
Oto nasze proste rozwiązanie:
Wystarczy użyć tagu <a> z pustą wartością atrybutu „href” w następujący sposób:
(w niektórych przypadkach musisz użyć „return true” po kliknięciu celu, aby uruchomić przeładowanie)
Aby uzyskać więcej informacji, sprawdź to pytanie: Czy pusty href jest prawidłowy?
źródło
window.location.href, to uratowało mi życie w widoku internetowym z Androida 5.1. Strona nie ładuje się ponownie z location.reload () w tej wersji z Androida.
źródło