Was ist der Unterschied zwischen
window.location.href="http://example.com";
window.location.replace("http://example.com");
window.location.assign("http://example.com");
Ich habe in vielen Foren gelesen, dass window.location.assign()
nur der aktuelle Sitzungsverlauf ersetzt wird und daher die Zurück-Schaltfläche des Browsers nicht funktioniert. Ich kann dies jedoch nicht reproduzieren.
function fnSetVariable() {
//window.location.href = "http://example.com";
window.location.replace("http://example.com");
//window.location.assign("http://example.com");
}
<a onmouseover="fnSetVariable();"
href="PageCachingByParam.aspx?id=12" >
CLICK
</a>
javascript
dom
location
milan_9211
quelle
quelle
Antworten:
Diese machen das Gleiche:
Sie navigieren einfach zur neuen URL. Die
replace
Methode navigiert dagegen zur URL, ohne dem Verlauf einen neuen Datensatz hinzuzufügen.Was Sie in diesen vielen Formen gelesen haben, ist also nicht korrekt. Die
assign
Methode fügt dem Verlauf einen neuen Datensatz hinzu.Referenz: http://developer.mozilla.org/en/window.location
quelle
assign()
? Aus dieser Antwort und den Dokumenten geht hervor, dass es identisch ist mitlocation = ...
.Der Teil darüber, dass die Schaltfläche Zurück nicht verwendet werden kann, ist eine häufige Fehlinterpretation. window.location.replace (URL) löscht den obersten EINEN Eintrag aus der Seitenverlaufsliste, indem es ihn mit dem neuen Eintrag überschreibt, sodass der Benutzer nicht einfach zu dieser EINEN bestimmten Webseite zurückkehren kann. Die Funktion löscht NICHT die gesamte Seitenverlaufsliste und macht die Schaltfläche Zurück auch nicht funktionsunfähig.
(KEINE mir bekannte Funktion oder Kombination von Parametern kann Verlaufslisteneinträge ändern oder überschreiben, die Sie mit Sicherheit nicht unbedingt besitzen. Browser beeinträchtigen diese Sicherheitsbeschränkung im Allgemeinen, indem sie einfach nicht einmal einen Vorgang definieren, der sich auf einen anderen Eintrag als auswirken könnte das Spitze eine in der Seite History - Liste. ich schaudere bei dem Gedanken , was Malware Art von hinterhältigen Dinge tun könnte , wenn eine solche Funktion vorhanden war.)
Wenn Sie die Schaltfläche "Zurück" wirklich funktionsunfähig machen möchten (wahrscheinlich nicht "benutzerfreundlich": Überlegen Sie noch einmal, ob Sie das wirklich möchten), "öffnen" Sie ein brandneues Fenster. (Sie können ein Popup "öffnen", das nicht einmal über einen "Zurück" -Button verfügt ... aber Popups sind heutzutage nicht sehr beliebt :-) Wenn Sie möchten, dass Ihre Seite angezeigt wird, egal was der Benutzer tut ( Auch hier ist die "Benutzerfreundlichkeit" fraglich.) Richten Sie einen window.onunload-Handler ein, der Ihre Seite jedes Mal von Anfang an klar neu lädt.
quelle