Scroll-Wert beim neuladen übernehmen
lima-city → Forum → Die eigene Homepage → HTML, CSS & Javascript
ankern
argument
bau
code
entsprechenden spalte
eventuell vermeiden
hilfe
http
internet
kopfzeile
laden
letzte parameter
log
nebeneffekt
page
ruck
sortierung
vorhandenen daten
wert auslesen
wert setzen
-
Hallo,
ich baue gerade eine php Seite auf, mit deren Hilfe man Daten zur mySql-Datenbank hinzufügen kann. Zudem lasse ich die vorhandenen Daten in Tabellen ausgeben, die bereits durch klick auf die Kopfzeile nach der entsprechenden Spalte sortiert werden. Hierzu übergeben die Links der Kopfzeile die Argumente für die Sortierung.
Unschöner Nebeneffekt ist allerdings, dass die Seite (logischer Weise) wieder ganz nach oben schiebt, was sehr störend ist. Mit Hilfe von JavaScript kann ich problemlos den Scroll-Wert auslesen, und beim Laden kann ich einen Wert setzen, zu dem gescrollt wird. Das Problem ist nun aber, dass der während des Klickens festgelegte Wert beim Neuladen offensichtlich verworfen wird.
Wie kann ich nun entweder den Wert auch nach dem Neuladen in JavaScript verfügbar machen oder ihn in den Argumenten des php mitsenden um es anschließend wieder Javascript zu übergeben? Keine meiner Versuche nach Beschreibungen im Internet waren erfolgreich. PS: Anker haben zwar funktioniert, dennoch gibt es aber einen Ruck.
// JavaScript var yPos; function scrollToLastPosition() { window.scrollTo(0, yPos); } function setY() { console.log(window.scrollY); yPos = window.scrollY; }
// php echo "<a onclick='setY()' href= 'index.php? p=".$sorter->page." &sorterTable=".$sorter->table." &sorterField=".$col." &sorterDescending=".$sorter->descending." &sorterLast=".$sorter->lastIndex." '>";
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Das müsste sich doch mit Hilfe eines Cookies lösen lassen, z.B. ähnlich wie hier
http://stackoverflow.com/questions/12744145/how-to-remember-scroll-position-o-page
Allerdings könntest du das Neuladen der Seite eventuell vermeiden, wenn du Ajax verwendest. -
Hey, super, mit Cookies klappt es wunderbar. Hab gestern stundenlang das Internet durchforstet, aber das habe ich nicht gefunden.
Über Ajax bin ich einige Male gestolpert, habe mich aber noch nie damit beschäftigt. Das sich das Sortieren und Anzeigen ohne Neuladen umsetzen lässt wäre für mich ganz was Neues. Scheint sich in jeden Fall zu lohnen Ajax anzuschauen und es damit mal zu probieren.
So jedenfalls geht es schon mal:
// JavaScript // beim Laden der Seite ausführen function scrollToLastPosition() { yPos = readCookie("yPos"); window.scrollTo(0, yPos); } // onckick-event function setY() { console.log(window.scrollY); document.cookie = 'yPos = ' + window.scrollY; } // Auslesen des Cookies (http://www.ntmb.de/tutorials/tutorial-334-0.html) function readCookie(key) { a = document.cookie; while(a != '') { cookiename = a.substring(0,a.search('=')); cookieValue = a.substring(a.search('=')+1,a.search(';')); // wenn es der letzte Parameter ist if(cookieValue == cookiename+'=') { cookieValue = a.substring(a.search('=')+1,a.length); } if(cookiename == key) { return cookieValue; } // vorderen Teil abschneiden i = a.search(';'); if(i == -1) { // nicht gefunden i = a.length } else { i += 2; } a = a.substring(i,a.length); } return ''; }
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage