Autor Zpráva
Aaron135
Profil
Ahojte,
nyní můj problém spočívá v tom, že když se realoadne stránka tak se div, který má scrolling naskroluje opět nahoru.
Jak zajistit, aby po reloadu opět naskroloval na stejné místo, kde byl naskrolován?
Předem dík Aaron135
peta
Profil
Ulozit jeho pozici do cookies?
Aaron135
Profil
A ta pozice se uloží jak?? Neznám totiž proměnou pro uložení...
Witiko
Profil
Aaron135:
Tohle uložíš: document.body.scrollTop || document.documentElement.scrollTop
Takto načteš: scrollTo(0, uloženáHodnota)
Aaron135
Profil
Mohl by si mi doložit celý kód s uložením i vytažením těch cookies prosím ?
Witiko
Profil
Uložení:
document.cookie = "odscrollovano=" + (document.body.scrollTop || document.documentElement.scrollTop);

Načtení:
var sušenka = document.cookie.match(/odscrollovano=(\d+)/);
if(sušenka) scrollTo(0, sušenka[1]);

Neozkoušeno, ale mělo by šlapat. Sušenka nemá definovanou expiraci, tzn. umře po ukončení současné relace. Pokud to není žádoucí, je možné k ukládané sušence ještě přilepit ";expires=" + new Date(-> doba expirace <-).toUTCString().
Aaron135
Profil
Nevím proč, ale tento kód nefunguje.
 <div id="str" onscroll="save();" style="overflow:auto;height:100px;" class="demo"><h1>blablabla</h1><br><br><br><br><br><p>Ahoj</p></div>
<script>
var susenka = document.cookie.match(/odscrollovano=(\d+)/);
if(susenka) scrollTo(susenka[1]);
function save(){
document.cookie = "odscrollovano="+document.getElementById('str');
}
</script>
Witiko
Profil
Aaron135:
document.cookie = "odscrollovano=" + document.getElementById('str');
Tohle je blábol, připojuješ k řetězci element. Výsledkem bude něco takovéhleho:
document.cookie = "odscrollovano=[object HTMLDivElement]"
Ty chceš ale uložit aktuální stav odscrollování. Tzn. správně bude:
document.cookie = "odscrollovano=" + document.getElementById('str').scrollTop;

Stejně tak funkce scrollTo(x, y) je dostupná pouze pro celé okno, pokud chceš scrollovat jen cílený element, pouze mu změníš vlastnost scrollTop. To znamená: Místo scrollTo(0, susenka[1]); půjde document.getElementById('str').scrollTop = susenka[1];

Celý kód pak:
var susenka = document.cookie.match(/odscrollovano=(\d+)/),
    element = document.getElementById('str');
if(susenka) element.scrollTop = susenka[1];
function save(){
  document.cookie = "odscrollovano=" + element.scrollTop;
}

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0