kostenloser Webspace werbefrei: lima-city


Scroll-Wert beim neuladen übernehmen

lima-cityForumDie eigene HomepageHTML, CSS & Javascript

  1. Autor dieses Themas

    kaaron

    kaaron hat kostenlosen Webspace.

    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."
    	'>";
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. mein-wunschname

    mein-wunschname hat kostenlosen Webspace.

    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.
  4. Autor dieses Themas

    kaaron

    kaaron hat kostenlosen Webspace.

    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 '';
    }

  5. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!