Antworten:
Wenn ich mich richtig erinnere, window.location.reload()lädt die aktuelle Seite mit POST-Daten neu, während window.location.href=window.location.hrefdie POST-Daten nicht enthalten sind.
Wie von @ W3Max in den Kommentaren unten angegeben, window.location.href=window.location.hrefwird 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, skipCachedamit 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: defaultWert für window.location.reload()istfalse
window.location.href = window.location.hrefhat den Trick gemacht.
location.reload()oder location.reload(false). Verwenden Sie, um eine vollständige Aktualisierung der Seite durchzuführen location.reload(true).
Der Unterschied ist das
window.location = document.URL;
lädt die Seite nicht neu, wenn die URL einen Hash (#) enthält (mit oder ohne etwas danach)
window.location.reload();
lädt die Seite neu.
location.href = location.hreffür selbstverständlich, aber ich bemerkte gerade das genaue Verhalten und kam zu SO, um das Wort zu verbreiten. Verwenden Sie location.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.
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:
if (!window.location.hash) {
window.location.href = window.location.href;
} else {
window.location.reload();
}
Als ich auf diese Frage stieß und ein abweichendes Verhalten im IE untersuchte, insbesondere im IE9, wurden ältere Versionen nicht überprüft. Es scheint
window.location.reload();
führt zu einer Aktualisierung, die den gesamten Bildschirm für eine Sekunde ausblendet, wobei as
window.location = document.URL;
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.URLwird 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.
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.
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 hinzu
Cache-Control max-age=0
Während die Einstellung window.location.hrefwie 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.
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 ...
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:
< a href="" ...>Click Me</a>
(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?
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.