Mozgó tartalom állapotának visszaállítása
2011-08-15T21:07:01+02:00
2011-08-16T23:46:12+02:00
2022-08-15T17:50:32+02:00
Indess
Volt már egy hasonló problémám, de ott csak egy DIV- ben kellett a scrollozott állapotot visszaállítani az oldal újratöltése után.
Hasonló gondom van most is, de itt egy JavaScript által mozgatott tartalomnak kéne visszaállítódni, ha az oldalt újratöltik (vagy akár másik menübe kattintanak) globálisan.
Tehát van az oldalnak egy olyan része, ami minden (külön oldalon) ugyanaz, és ha csak frissítik az oldalt, vagy másik menübe mennek, az az állapota töltődjön be a scrollozott tartalomnak, ami a kattintás pillanatában volt.


Van egy ilyen scriptem, ami a HEAD-ben van:





<script type="text/javascript"> var delayb4scroll=0 //Specify initial delay before marquee starts to scroll on page (2000=2 seconds) var marqueespeed=2 //Specify marquee scroll speed (larger is faster 1-10) var pauseit=1 //Pause marquee onMousever (0=no. 1=yes)? ////NO NEED TO EDIT BELOW THIS LINE//////////// var copyspeed=marqueespeed var pausespeed=(pauseit==0)? copyspeed: 0 var actualheight='' function scrollmarquee(){ if (parseInt(cross_marquee.style.top)>(actualheight*(-1)+8)) cross_marquee.style.top=parseInt(cross_marquee.style.top)-copyspeed+"px" else cross_marquee.style.top=parseInt(marqueeheight)+8+"px" } function initializemarquee(){ cross_marquee=document.getElementById("vmarquee") cross_marquee.style.top=0 marqueeheight=document.getElementById("marqueecontainer").offsetHeight actualheight=cross_marquee.offsetHeight if (window.opera || navigator.userAgent.indexOf("Netscape/7")!=-1){ //if Opera or Netscape 7x, add scrollbars to scroll and exit cross_marquee.style.height=marqueeheight+"px" cross_marquee.style.overflow="scroll" return } setTimeout('lefttime=setInterval("scrollmarquee()",30)', delayb4scroll) } if (window.addEventListener) window.addEventListener("load", initializemarquee, false) else if (window.attachEvent) window.attachEvent("onload", initializemarquee) else if (document.getElementById) window.onload=initializemarquee </script>





Az oldalban pedig:


<div id="marqueecontainer" onMouseover="copyspeed=pausespeed" onMouseout="copyspeed=marqueespeed"><div id="vmarquee" style="position: absolute; width: 98%;"> TARTALOM . . . </div> </div>

Aki ért a JS-hez, annak nem nehéz az előző megoldás után átírni, csak nekem sajnos ez (még) magas.
Mutasd a teljes hozzászólást!
Ez teljesen ugyanaz a helyzet, az előző megoldásból veszed a setCookie és getCookie függvényeket, mert azok kellenek továbbra is. Majd miután a scrollmarquee függvény beállította a cross_marquee elemented top tulajdonságát, ezt eltárolod a setCookie függvény segítségével, ugyanúgy ahogy az előző példában.
setCookie('myScrollCookie', cross_marquee.style.top, 365);

Majd ahogy az előző példában is, itt is feliratkozol a window.onload eseményre, és ha létezik a cookie (getCookie), akkor a cross_marquee.style.top-nak beállítod a kiolvasott értéket.
window.onload = function() { var prevScroll = getCookie('myScrollCookie'); if (prevScroll != null && prevScroll != '' && prevScroll > 0) { cross_marquee.style.top = prevScroll; }

Igazából teljesen ugyanazt kell megcsinálni, mint az előző példádban is.
Mutasd a teljes hozzászólást!

Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd