Autor Zpráva
Rossko
Profil *
V skripte mi funguje window.location.hash ale to mi posunie nie len v DIV objekte (kde to robiť má) ale aj celú stránku, ako je možné to WINDOW nahradiť za ten DIV aby to šlo len v ňom?
Skúšal som document.getElementById('prispevky').location.hash ale to nešlo
viete mi poradiť? je to vôbec možné?
Chamurappi
Profil
Reaguji na Rosska:
document.getElementById('prispevky').scrollTop = číslo;
Chceš najet na něco konkrétního, nebo prostě jen dolů? Jestli úplně dolů, stačí dát hodně vysoké číslo. Jestli na něco konkrétního, muselo by se změřit, jak vysoko to je.
Rossko
Profil *
práveže na niečo konkrétne, hento som skúšal že zistím pôvodnú veľkosť a novú veľkosť, odpočítam a scrolltop na tú pozíciu, lenže to mi nefungovalo dobre, lebo sa to načítava z databázy a nestíhalo to načítať a keď som dal setTimeout() tak to vyzeralo zle, že to skočilo hore a potom zase dole, nepekné
Jan Kupka
Profil
Rossko:

Ahoj, těžko se radí, když není vidět konkrétní použití. Pokud načítáš obsah divu přes AJAX, tak odscrolluj (jak píše Chamurappi) až v callbacku, který se zavolá po dokončení AJAX requestu, pokud chceš scrollovat po načtení stránky, počkej nejdřív na DOMContentLoaded event (nejlépe pomocí nějaké knihovny, která řeší implementaci napříč prohlížeči). Pak nebudeš mít problém s tím, že se ti JS provede příliš brzy.
Chamurappi
Profil
Reaguji na Rosska:
Asi si to skákání nedovedu představit. Mohl bych vidět živou ukázku?
Pozici, na kterou je zapotřebí najet, bych zjistil tak, že bych si změřil rodič.getBoundingClientRect().top a od té odečetl cílovýElement.getBoundingClientRect().top. To by mělo fungovat v jakémkoliv okmažiku, pokud existují rodič a cílovýElement. Kdybys měl uvnitř obrázky bez zadaných rozměrů, musel by sis počkat na onload (minimálně jejich). A samozřejmě, že pokud se změní proporce později, budeš muset provést výpočet znovu.


Reaguji na Jana Kupku:
Čekat na DOMContentLoaded nemá smysl, protože stavba okolního DOMu proporce elementu neovlivňuje.

nejlépe pomocí nějaké knihovny, která řeší implementaci napříč prohlížeči
Na takovou trivialitu nepotřebuje tahat tunu balastu.
_es
Profil
Rossko:
práveže na niečo konkrétne
Vyskúšaj scrollIntoView, no možno to bude mať rovnaký nechcený efekt.
Jan Kupka
Profil
Chamurappi:
Nevím, jak má kód na stránce uspořádaný, proto jsem to uvedl. Jinak knihovna != automaticky jQuery nebo něco podobného.
Chamurappi
Profil
Reaguji na Jana Kupku:
Chápu. Ale myslím, že by bylo obtížné (ne-li nemožné) kód uspořádat tak, aby skript nestačilo spustit za ukončovací značkou obalu a muselo se čekat na donačtení DOMu. Prvky umístěné později můžou ovlivnit pozici toho obalu, ale s vnitřkem už nic nehne (overflow zaručuje imunitu).
Vlastně jedna možnost mě napadá — když by pod tím vším byl <style>, který přenastaví velikost písma uvnitř obalu. Ovšem to je dost netradiční scénář.

knihovna != automaticky jQuery
Já prskám preventivně :-)

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:

Prosím používejte diakritiku a interpunkci.

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