totty
Goto Top

Automatisches Refresh und position halten einer HTML Seite

Hallo Forum,
ich habe ein kleines Problme mit JavaScript, vielleicht kann mir ja einer von euch helfen. Undzwar habe ich eine Tabelle die in html format und im Abstand von 2 min neu geschrieben wird.
jetzt würde ich gerne, das diese Html Datei sich selbst "refresht" und die position wo man gerade ist behält. Habe das ganze schon gemacht und das sieht so aus:
<HEAD>
<script type='text/javascript'>
var time = 5000;
function refresh()
{
top.frame_scroll_Xpos = new Array(window.scrollLeft);
top.frame_scroll_Ypos = new Array(window.scrollTop);
location.reload();
}
setTimeout("refresh()",time);
function get_position()
{
var scroll_Xpos = top.frame_scroll_Xpos;
var scroll_Ypos = top.frame_scroll_Ypos;
window.scrollTo(scroll_Xpos,scroll_Ypos);
}
</script>
</HEAD>
<BODY onload='get_position();' >

Wenn ich nun hingehe und per F5 aktualiesiere dann funkitoniert das ganze auch, aber wenn der nach 5 sek das macht, dann springt der immer nach ganz oben. Woran liegt es, wo ist mein Denkfehler?

Für Ideen und Ändeurngen bin ich dankbar!
Gruß Totty

Content-ID: 81752

Url: https://administrator.de/contentid/81752

Ausgedruckt am: 20.11.2024 um 05:11 Uhr

Arano
Arano 27.02.2008 um 11:21:18 Uhr
Goto Top
Moin,

der Denkfehler liegt hier:
function refresh()
{
top.frame_scroll_Xpos = new Array(window.scrollLeft);
top.frame_scroll_Ypos = new Array(window.scrollTop);
location.reload();
}
Erst scrollt das Document an die angegebenen Position (wenn es so funktionier, keine Ahnung!)
Und danach erst wird das Dokument neu geladen, das neu geladen Dokument hat aber keine "erinerung" an die letzte Position im Browser, woher auch :wink: der reload wirkt warscheinlich wie ein ganz normaler Request.

Eine Möglichkeit wäre dem neuzuladenem Dokument mitzuteilen wo es "hin soll".
Ich bin mir nicht sicher ob es überhaubt mit JS so möglich ist, aber ich denke daran das du die "alten Positionsdaten" per GET an das "neue" Dokument übergiebst
window.location.href = "./datei.html?scrollPos=200;  
Im Dokument selber muss das dann wieder per JS ausgelesen und verarbeitet werden.

Mal so neben bei:
Ist es wirklich notwendig das die Seite alle 5 Sek neu geladen wird wenn die Daten nur alle 120 Sek neu generiert werden ?

Achso, F5 ist eine Funktion des Browsers, keine der Website ! Bei einem druck auf F5 merkt sich der Browser warscheinlich selber die gescrollte Position, läd das Dokument neu und scrollt wieder an die Position.

Gruß Arano
Totty
Totty 27.02.2008 um 13:43:14 Uhr
Goto Top
Hi Arano,
danke für die Zeit, mir zu Antworten.

Die 5 Sekunden sind da im Moment nur zum testen.
Sonst wäre es durchaus etwas irrsinnig, wie du sagtest.
Standardmässig sollten es 30 Sek sein, nur beim Programmieren immer 30 Sekunden zu warten bis man sieht ob es funktiioniert oder nicht, ist doch ein wenig "ätzend".
Im Prinzip speichert er dort (function refresh) ja nur die aktuelle Position in die Variablen(top.frame_scroll_Xpos und top.frame_scroll_Ypos) die er dann bei function get_position() wieder einsetzt !?

Gruß Totty
Arano
Arano 27.02.2008 um 14:13:40 Uhr
Goto Top
Moin Totty

jaa, das mit den 5 Sek leuchtet ein, hät ich mir ja auch denken können !
Und das in der Funkton "refesh()" nur die Positionen gespeichert werden hät ich auch sehen können.

Naja, das ändert fast nichts an dem was ich sagte, den nach dem reload sind die beiden Variabeln leer, evtl. existieren sie nicht einmal ! Das kanst du ganz einfach prüfen in dem du ein "alert(top.frame_scroll_Xpos);" in die Funktion "get_position()" schiebst.
Wie schon erwähnt, jede Seite fängt bei Null an und somit sind alle Daten die nur in Variabeln "gespeichert" sind verloren werden sie nicht in in einem Cookie gespeichert oder per URL übergeben.

Gruß Tobias
Totty
Totty 27.02.2008 um 15:22:54 Uhr
Goto Top
Hi Tobias,

du hast Recht, die Variable ist undefined.
Jetzt ist natürlich die Frage, ob es Sinn hat, dafür extra einen Cockie anzulegen. Oder ob es nicht die Möglichkeit gibt, es anders zu realisieren?

Gruß Totty