28. oktober 2004 - 12:04
Der er
4 kommentarer og
1 løsning
Refresh af side hvert minut, med bevarelse af scrollbar position
Jeg forsøger at lave en automatisk refresh af en side engang i minuttet.
Jeg har prøvet med html-equiv, og javascript setTimeout('window.location.reload()',10*1000)
Begge løsninger har dog den kedelige effekt, at de "glemmer" hvor man stod på siden, i modsætning til hvis man manuelt laver en refresh i browseren.
Er der nogen der kender en måde at løse dette problem på?
31. oktober 2004 - 04:13
#4
<ole>
'document.body.scrollTop' returnerer 0, hvis man bruger en DTD, der sørger for, at IE overholder standarderne. Derimod returnerer 'document.documentElement.scrollTop' den ønskede værdi med den korrekte DTD. For at være uafhængig af DTD, kan man teste på 'document.compatMode':
<script type="text/JavaScript">
function myReLoc() {
var bc, oDate, newTime, sTop;
bc = document.compatMode.toLowerCase() == "backcompat";
sTop = (bc)? document.body.scrollTop : document.documentElement.scrollTop;
oDate = new Date();
newTime = oDate.getTime() + (1000*60);
oDate.setTime(newTime);
if ( navigator.cookieEnabled ) {
document.cookie="scrollKage="+sTop+";expires=" + oDate.toGMTString();
}
location.reload(true);
}
function doScroll() {
if ( navigator.cookieEnabled && document.cookie.indexOf("scrollKage=")!=-1 ) {
window.scrollTo(0, document.cookie.split("=")[1]);
}
setTimeout("myReLoc()", 1000*10);
}
window.onload = function() {
doScroll();
}
</script>
Her sætter vi en cookie med den aflæste scroll-værdi lige før, der reloades. Kagen har en levetid på et minut, hvilket skulle være rigeligt til at sikre, værdien kan aflæses, når dokumentet igen ankommer til browseren.
På onload checker vi, om der er en kage med det rigtige navn. Hvis der er, scrolles siden det ønskede stykke.
/mvh
</bole>