reload() & Seitenanfang
Eda
- javascript
Hallo Leute
Mir muss mal auf die Sprünge geholfen werden.
Ich habe auf einer Seite zwei Frames, wobei das erste aktualisiert werden soll, wenn im zweiten eine spezielle Seite aufgerufen wird.
Alles funktionier auch wunderbar, wenn ich in der speziellen Seite im Body onLoad="blbla.reload()" platzieren.
Was mir aber nicht gefällt, ist, dass die aktualisierte auf Seitenanfang springt und nicht aus dem gleichen Seitenabschnitt bleibt, wie wenn ich es mit aktualisieren mache.
Folgendes noch zur Seite: Es ist eine php-Seite, deren Einträge aus einer DB genommen werden (eine lange Liste und einer der Einträge wurde von der speziellen Seite geändert - und das soll man sehen).
Vielen Dank für sachdienliche Hinweise
Viva, Eda
Hallo, Eda!
Folgendes noch zur Seite: Es ist eine php-Seite, deren Einträge aus einer DB genommen werden (eine lange Liste und einer der Einträge wurde von der speziellen Seite geändert - und das soll man sehen).
dann setze beim ändern an der stelle einen anker und leite den browser auf diese adresse weiter (xxx.php#anker)
freundl. Grüsse aus Berlin, Raik
Das ist tatsächlich eine Möglichkeit, Danke, doch möchte ich nicht einen bestimmten Seitenausschnitt, sondern den der gerade da ist (mehr oder weniger).
Die Option mit dem Anker steht also leider nicht zur Verfügung.
Wieso aktualiert die Seite überhaupt anders mit JS? Sollte sie doch eigentlich nicht dürfen, oder?
Eda
Hallo, Eda!
Das ist tatsächlich eine Möglichkeit, Danke, doch möchte ich nicht einen bestimmten Seitenausschnitt, sondern den der gerade da ist (mehr oder weniger).
Die Option mit dem Anker steht also leider nicht zur Verfügung.
ein user aktualisiert einen eintrag. das php-script nimmt diese änderung in der datenbank vor und generiert eine neue liste. dabei wird bei diesem geänderten datensatz bei der ausgabe in html zusätzlich ein anker ausgegeben und der browser zu der url der seite pluss dem anker umgeleitet, so dass er den geänderten eintrag automatisch in den sichtbereich scrollt.
war es nicht das, was du wolltest?
was ist daran jetzt das problem? wenn er etwas zu weit scrollt, positioniere den anker mit css etwas höher.
Wieso aktualiert die Seite überhaupt anders mit JS? Sollte sie doch eigentlich nicht dürfen, oder?
tscha, frag microsoft. wenn die seite zwischenzeitlich auf dem server geändert wurde (neues modified-datum), scrollt übrigens auch der ie nicht mehr dort hin beim aktualisieren.
freundl. Grüsse aus Berlin, Raik
Wie das mit dem Anker realisiert werden kann, ist mir schon klar, aber ich will nicht, dass er automatisch zu einem speziellen Ort scrollt. Er soll einfach da bleiben, wo er gerade ist. Der User hat womöglich absichtlich und aus gutem Grund weitergescrollt und da will ich ihm dann nicht eine andere Position aufzwingen.
Ich habe mir überlegt, ob sich per Javascript nicht die Scrollposition übergeben und diese nach dem Reload wieder herstellen liesse.
Eda
Hallo, Eda!
Ich habe mir überlegt, ob sich per Javascript nicht die Scrollposition übergeben und diese nach dem Reload wieder herstellen liesse.
ach, das mit dem neuen eintrag hab ich da reininterpretiert, sorry.
dann dürften pageYOffset und scrollTo() für dich interessant sein. :-)
freundl. Grüsse aus Berlin, Raik
Vielen Dank
Das scheint ein gehbarer Weg zu sein.
Eda
ps: Dass, Du da was reininterpretiert hast, muss relativ betrachtet werden, da sich meine Vorstellungen in dieser Zeit ziemlich konkretisiert haben.
doch noch nicht ganz fertig
ich habe es implementiert:
dy = blabla.document.body.scrollTop;
blabla.reload();
blabla.scrollTo(0,dy);
und die Seite bleibt beim IE oben stehen.
Wenn ich nicht reloade gehts, also kein Programmierfehler. Mit Reload aber passiert nichts. Nicht mal ne Fehlermeldung.
Er kann offenbar nicht scrollen, wenn er noch nicht fertiggeladen hat?
Eda
Hallo Eda
Wenn ich nicht reloade gehts, also kein Programmierfehler. Mit Reload aber passiert nichts. Nicht mal ne Fehlermeldung.
Er kann offenbar nicht scrollen, wenn er noch nicht fertiggeladen hat?
Du könntest das Scrollen doch mittels onload der Seite, die scrollen soll
anstoßen.
Die zweite Seite speichert die Scrollposition der Ersten in einer Variablen
und fürht dann den Reload dieser aus.
Die neu geladene Seite ruft mittels onload ein Skript auf, das prüft, ob diese
Variable definiert ist und scrollt dann auf die dort gespeicherte Position.
Auf Wiederlesen
Detlef
Hallo, Eda!
dy = blabla.document.body.scrollTop;
du legst eine neue variable an. das solltest du eventabhängig tun, damit die variable nicht beim neuladen der seite neu gesetzt wird, also onunload(). hast du nach dem reload mal geprüft, ob die variable noch existiert und welchen wert sie hat?
evtl. kannst du den wert ja onunload() in window.name speichern und onload() da wieder auslesen.
blabla.reload();
blabla.scrollTo(0,dy);
wärend die seite geladen wird, ist sie noch nicht fertig gerendert, hat also auch noch keine länge. die hat sie erst onload().
freundl. Grüsse aus Berlin, Raik