Was ist der Unterschied zwischen JavaScript
window.location.href = window.location.href
und
window.location.reload()
Funktionen?
quelle
Was ist der Unterschied zwischen JavaScript
window.location.href = window.location.href
und
window.location.reload()
Funktionen?
Wenn ich mich richtig erinnere, window.location.reload()
lädt die aktuelle Seite mit POST-Daten neu, während window.location.href=window.location.href
die POST-Daten nicht enthalten sind.
Wie von @ W3Max in den Kommentaren unten angegeben, window.location.href=window.location.href
wird die Seite nicht neu geladen, wenn die URL einen Anker (#) enthält. window.location.reload()
Dies müssen Sie in diesem Fall verwenden.
Wie von @Mic unten angegeben, window.location.reload()
wird ein zusätzliches Argument verwendet, skipCache
damit bei Verwendung window.location.reload(true)
des Browsers der Cache übersprungen und die Seite vom Server neu geladen wird. window.location.reload(false)
wird das Gegenteil tun und die Seite wenn möglich aus dem Cache laden.
Wenn Sie sagen,
window.location.reload(true)
der Browser überspringt den Cache und lädt die Seite vom Server neu.window.location.reload(false)
wird das Gegenteil tun.Hinweis:
default
Wert fürwindow.location.reload()
istfalse
quelle
window.location.href = window.location.href
hat den Trick gemacht.location.reload()
oderlocation.reload(false)
. Verwenden Sie, um eine vollständige Aktualisierung der Seite durchzuführenlocation.reload(true)
.Der Unterschied ist das
lädt die Seite nicht neu, wenn die URL einen Hash (#) enthält (mit oder ohne etwas danach)
lädt die Seite neu.
quelle
location.href = location.href
für selbstverständlich, aber ich bemerkte gerade das genaue Verhalten und kam zu SO, um das Wort zu verbreiten. Verwenden Sielocation.reload()
stattdessen einfach .window.location.replace(window.location.pathname);
Wenn Sie den booleschen Wert true zum Neuladen hinzufügen
window.location.reload(true)
, wird er vom Server geladen.Es ist nicht klar, wie unterstützt dieser Boolesche Wert ist. W3Org erwähnt, dass NS ihn unterstützt hat
Es könnte einen Unterschied zwischen dem Inhalt von window.location.href und document.URL geben - zumindest gab es früher einen Unterschied zwischen location.href und dem nicht standardmäßigen und veralteten document.location , der mit Umleitung zu tun hatte, aber das ist wirklich letztes Jahrtausend.
Zu Dokumentationszwecken würde ich window.location.reload () verwenden, da Sie dies tun möchten.
quelle
Wie gesagt, das Ändern der href, wenn die URL einen Hash (#) enthält, würde die Seite nicht neu laden. Daher verwende ich dies, um es anstelle von regulären Ausdrücken neu zu laden:
quelle
Als ich auf diese Frage stieß und ein abweichendes Verhalten im IE untersuchte, insbesondere im IE9, wurden ältere Versionen nicht überprüft. Es scheint
führt zu einer Aktualisierung, die den gesamten Bildschirm für eine Sekunde ausblendet, wobei as
Aktualisiert die Seite viel schneller, fast unmerklich.
window.location.reload()
Wenn Sie etwas mehr Nachforschungen anstellen und mit Fiddler experimentieren, wird der Cache anscheinend umgangen und vom Server neu geladen, unabhängig davon, ob Sie den Booleschen Wert damit übergeben oder nicht. Dazu gehört auch das Abrufen aller Ihrer Assets (Bilder, Skripte, Stylesheets, etc) wieder. Wenn Sie also nur möchten, dass die Seite den HTML-Code aktualisiert,window.location = document.URL
wird die Seite viel schneller und mit weniger Verkehr zurückgegeben.Ein Unterschied im Verhalten zwischen Browsern besteht darin, dass IE9 bei Verwendung der Reload-Methode die sichtbare Seite löscht und scheinbar von Grund auf neu erstellt, wobei FF und Chrome warten, bis sie die neuen Assets erhalten, und sie neu erstellen, wenn sie unterschiedlich sind.
quelle
Ein Unterschied in Firefox (12.0) besteht darin, dass auf einer Seite, die aus einem POST gerendert wurde, reload () eine Warnung anzeigt und erneut veröffentlicht, während eine URL-Zuweisung ein GET ausführt.
Google Chrome führt für beide ein GET durch.
quelle
Bei Verwendung von JSF tritt jetzt das Problem mit der Aktualisierung nach Ablauf der Sitzung auf: PrimeFaces ViewExpiredException nach dem erneuten Laden der Seite, und bei einigen Untersuchungen habe ich einen Unterschied in FireFox festgestellt:
Das Aufrufen
window.location.reload()
funktioniert wie das Klicken auf das Aktualisierungssymbol in FF. Es fügt die Zeile hinzuCache-Control max-age=0
Während die Einstellung
window.location.href
wie das Drücken der EINGABETASTE in der URL-Zeile funktioniert, wird diese Zeile nicht gesendet.Obwohl beide als GET gesendet werden, stellt das erste (erneutes Laden) die vorherigen Daten wieder her und die Anwendung befindet sich in einem inkonsistenten Zustand.
quelle
Nein, das sollte es nicht geben. Es ist jedoch möglich, dass es in einigen Browsern Unterschiede gibt, sodass entweder (oder keiner) in einigen Fällen nicht funktioniert.
quelle
Aus meiner Erfahrung von ca. 3 Jahren konnte ich keinen Unterschied feststellen ...
edit: ja, wie einer von ihnen hier gesagt hat, ist es der Unterschied, nur einen booleschen Parameter an window.location.reload () zu übergeben. Wenn Sie true übergeben , lädt der Browser eine neue Seite. Wenn false , wird die Cache-Version geladen ...
quelle
In unserem Fall möchten wir die Seite nur in der Webansicht neu laden und aus bestimmten Gründen konnten wir nicht herausfinden, warum! Wir probieren fast jede Lösung aus, die im Web verfügbar war, aber ohne erneutes Laden mit location.reload () oder alternativen Lösungen wie window.location.reload (), location.reload (true), ...!
Hier ist unsere einfache Lösung:
Verwenden Sie einfach ein <a Tag mit dem leeren Attributionswert "href" wie folgt:
(In einigen Fällen müssen Sie beim Klicken auf das Ziel "return true" verwenden, um das Neuladen auszulösen.)
Weitere Informationen finden Sie in dieser Frage: Ist eine leere href gültig?
quelle
window.location.href, dies hat mir in der Webansicht von Android 5.1 das Leben gerettet. Die Seite wird in dieser Version von Android nicht mit location.reload () neu geladen.
quelle