• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Beim DIV-Reload Scrollposition behalten

oberheim

New member
Hallo,
ich bin mit der Such nichr weitergekommen. Vielleicht hilft mir trotzdem jemand :)

Ich aktualisiere alle 30sek. einen DIV-Bereich meiner Seite. Wenn nun der User diesen Bereich gerade nach unten gescrollt hat,weil er bei Artikel 78 ist, dann springt die Scrollposition nach dem Reload wieder nach oben, und der User muss umständlich seine alte Position suchen. Wie kann ich das Problem beheben?

Folgenden Code nutze ich:

HTML:
function update() {
         $("#inhaltsdiv").load("inhalt.php")
         evt.preventDefault();
      }
function autoupdate() {
	setInterval('update()',30000);
}

Danke im Voraus
 
Zuletzt bearbeitet von einem Moderator:
Prinzipiell wäre es sauberer, wenn du nicht den kompletten Inhalt austauschen würdest, sondern nur die Teile, die sich geändert haben... aber das nur nebenbei.

Zu deinem speziellen Problem: Du darfst dabei nicht über die .load()-Funktion von jQuery gehen, da du dabei zu wenig Kontrolle über das Austauschen des Inhaltes hast.
Denn du musst vor dem Tausch einfach die scrollposition (.scrollTop und .scrollLeft) in einer Variable speichern und dann nach dem Tausch wieder zurückschreiben.
Du holst dir also die Sachen mit einem normalen AJAX, speicherst die Werte, schreibst das neue .innerHTML und setzt die Scrollposition wieder auf die alten Werte.

PS: Dein Code erzeugt mit ziemlicher Sicherheit eine Fehlermeldung in der Fehlerkonsole...
PPS: window.setTimeout sollte man als ersten Parameter keinen String übergeben.
 
$.load() ist ein Shorthand von $.get() - Probleme oder gar eine Fehlermeldung gibt es mit dem Konstrukt oben zumindest nicht wegen der $.load()-Anweisung. :)

Allerdings wegen "evt" und der schon erwähnten Interval-Setting selbst.

Schöner: Du rufst die Funktion "update" auf und diese ruft sich immer wieder selbst mit ihrem eigenen Callback nach x Sekunden auf. Ebenso ist die Verwendung einer Variablen für Intervalle (oder auch Timeouts) immer hilfreich, damit man diese bei Bedarf auch stoppen könnte.

Enjoy ...
 
Zurück
Oben