Wie erzwinge eine Seite neu zu laden, wenn alles, was in URL geändert wurde, Hash ist?
Ich versuche, aktuelle Seite neu laden mit verschiedenen hash-url, aber es funktioniert nicht wie erwartet.
(Klärung, wie ich das will: die Seite neu Laden und dann scrollen Sie zu dem neuen hash.)
Ansatz #1:
window.location.hash = "#" + newhash;
Nur Schriftrollen zu diesem Anker ohne Neuladen der Seite.
Ansatz #2:
window.location.hash = "#" + newhash;
window.location.reload(true);
Irgendwie funktioniert, aber es erste Schriftrollen auf den Anker, dann lädt die Seite, dann scrollt, um den Anker wieder.
Ansatz #3:
window.location.href = window.location.pathname + window.location.search + "&random=" + Math.round(Math.random()*100000) + "#" + newhash;
Funktioniert, aber ich würde lieber nicht hinzufügen zufälliger Müll an die url an.
Gibt es eine bessere Lösung?
InformationsquelleAutor der Frage serg | 2009-10-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Entfernen Sie den Anker, Sie gehen zu navigieren, verwenden Sie dann Ansatz #2? Da es keine Anker, Einstellung der hash sollte nicht die Seite scrollen.
InformationsquelleAutor der Antwort Nickolay
Ich hatte eine JQuery-Funktion abgefeuert auf
$(document).ready()
was erkannt, wenn es einen hash an die URL angehängt, in meinem Fall, also behielt ich die Funktion die gleiche, und nur dann verwendet ein force-reload, wenn ein hash-Veränderung festgestellt wurde:Dann meine anderen Funktion -
In meinem Fall, es war in Ordnung für UX -- kann nicht gut sein für andere.
InformationsquelleAutor der Antwort RCNeil
Es sollte erwartet werden, dass #foo wird, Blättern Sie zu dem Anker mit der id, "foo". Wenn Sie verwenden möchten, Ansatz #1 und haben es erneut, ist dieser Ansatz funktionieren könnte.
InformationsquelleAutor der Antwort Eli Grey
Weitere option ist das entfernen des hash und speichert ihn in session-Speicherung zum Abruf auf reload:
und dann oben auf der Seite können Sie den folgenden code:
InformationsquelleAutor der Antwort yts