2012-07-07 7 views
5

Ich habe eine Webseite, die einige Daten alle 30 Sekunden mit einem jquery-Post neu lädt. Der jquery-Post wird die Anker in einem Tab-Formular abrufen, wenn jquery die Aktualisierung durchführt Der Anker wird immer an den ersten Anker gelegt.Verschieben des Browsers zum Verankern des Standorts, ohne dass die Seite aktualisiert wird

Angenommen, ich habe # anchor1, # anchor2 und # anchor3. Wenn der Benutzer # anchor2 und jquery reloads anzeigt, wird standardmäßig # anchor1 verwendet. Bevor die jquery getan wird Ich überprüfen, um zu sehen, welche Anker der Betrachter verwendet, und dann nach jquery beendet hat ich dann den Anker auswählen, die sie suchen, indem Sie den Code unten

document.location.href= "#anchor2"; 

Verwendung Wenn ich den obigen Code verwenden Es bewirkt natürlich, dass die Seite aktualisiert wird, damit die ursprüngliche document.ready-Funktion die Daten abruft. Daher wird der Timer nie verwendet, stattdessen lädt er die jQuery permanent neu und tut dies etwa jede Sekunde, anstatt das Javascript zu verwenden Timer.

Wie kann ich den Benutzer auf den Anker verweisen, den der Benutzer vor dem Ajax neu geladen hat, ohne die Seite zu aktualisieren.

Vielen Dank für Ihre Hilfe.

Antwort

13

Verwenden Sie die document.location.hash Eigenschaft:

document.location.hash = "#anchor2"; 
+0

Dank, scheint diese Arbeit zu sortieren. Im Moment habe ich zum Testen den Ankernamen '' anchor2'' hart programmiert. Es scheint zu funktionieren, wenn die Funktion das erste Mal aufgerufen wird, aber wenn jquery die Daten neu lädt, setzt es den Anker nicht wieder, es geht einfach auf den Standard als ob der Anker nie gesetzt wurde – Boardy

+0

Wenn Sie einen vollen 'POST/GET' auf dem Server durchführen, dann scheint JavaScript, das Sie verwenden, um den' Hash' einzustellen, nicht zu funktionieren, weil die Antwort vom Server den Seite. Wenn es sich um eine partielle Anfrage 'AJAX' handelt, dann sollte dies wie angekündigt funktionieren ... – xandercoded

+1

Danke für Ihre Hilfe Ich habe es geschafft, es zu funktionieren, aber aus irgendeinem Grund muss ich den Hash mit' 'document.location löschen. hash = "" '' bevor ich es mit dem tatsächlichen Wert einstelle, aber es scheint OK zu funktionieren. – Boardy

Verwandte Themen