scrollTo
Eda
- javascript
Hallo Welt
Auf die Gefahr hin, mich unbeliebt zu machen, komme ich nochmals mit dem gleichen Problem auf Euch zu. Ich habe nämlich noch keine brauchbare Lösung gefunden, auch wenn ich nun fähig bin mein Problem weit präziser zu spezifizieren.
Ich habe eine Seite mit 2 Frames.
Nun möchte ich, dass beim onLoad der Seite XY im Frame 2 die aktuelle Seite (ich weiss nicht, welche das konkret ist) im Frame 1 aktualisiert wird und dass der sichtbare Seitenausschnit der Seite 1 (mehr oder weniger) der gleiche bleibt.
Das habe ich implementiert mit einem onload="gump()" im Body-Tag der Seite XY, wobei
function gump() {
dy = parent.frame1.document.body.scrollTop;
/ alter(dy); -> funktioniert!
parent.frame1.reload();
/ alter(dy); -> funktioniert!
parent.frame1.scrollTo(0,dy);
/ alter(dy); -> funktioniert
}
Im IE funktioniert das nicht, denn offenbar muss die Seite erst vollständig geladen (onLoad) sein, bevor er scrollen kann.
Gibt es die Möglichkeit eines onLoadEinerAnderenSeite()?
Oder wie kriege ich das sonst hin?
(Wichtig: ich kann keine Scripte in den Seiten, die im Frame 1 plaziert werden, einfügen.)
Vielen Dank für sachdienliche Hinweise
Eda
hi,
Im IE funktioniert das nicht, denn offenbar muss die Seite erst vollständig geladen (onLoad) sein, bevor er scrollen kann.
das klingt doch auch vernünftig.
du kannst ja auch nicht in einem buch seite 523 aufblättern, wenn dieses buch noch nicht einmal fertig gedruckt und gebunden ist.
Gibt es die Möglichkeit eines onLoadEinerAnderenSeite()?
falls diese frage darauf abzielt, wie du das scrollen eines anderen fensters/frames aus deinem aktuellen heraus auslösen kannst, dazu findest du hier http://de.selfhtml.org/javascript/objekte/window.htm#allgemeines tipps zum zugriff über fenster hinweg.
Wichtig: ich kann keine Scripte in den Seiten, die im Frame 1 plaziert werden, einfügen.)
das klingt so, als ob sie von einer anderen domain kämen(?) - dann geht dieser übergreifende zugriff natürlich nicht, stichwort same origin policy.
gruß,
wahsaga
Danke für die Antwort
hi,
Im IE funktioniert das nicht, denn offenbar muss die Seite erst vollständig geladen (onLoad) sein, bevor er scrollen kann.
das klingt doch auch vernünftig.
du kannst ja auch nicht in einem buch seite 523 aufblättern, wenn dieses buch noch nicht einmal fertig gedruckt und gebunden ist.
das stimmt natürlich, doch wäre es andererseits sehr vernünftig, wenn der IE mit dem fortfahren im Script darauf warten würde, dass die vorhergehende Aufgabe (das Reload der anderen Seite) auch beendet wurde. Das tut er nicht. Mozilla aber schon.
Gibt es die Möglichkeit eines onLoadEinerAnderenSeite()?
falls diese frage darauf abzielt, wie du das scrollen eines anderen fensters/frames aus deinem aktuellen heraus auslösen kannst, dazu findest du hier http://de.selfhtml.org/javascript/objekte/window.htm#allgemeines tipps zum zugriff über fenster hinweg.
Nein, die Frage ziehlt darauf, ob sich feststellen lässt, dass die Seite in einem anderen Frame fertiggeladen wurde. Auf diese weise könnte man das Script ja so lange warten lassen.
Wichtig: ich kann keine Scripte in den Seiten, die im Frame 1 plaziert werden, einfügen.)
das klingt so, als ob sie von einer anderen domain kämen(?) - dann geht dieser übergreifende zugriff natürlich nicht, stichwort same origin policy.
Keine Bange, das ist alle auf meiner Seite, sonst hätte das Reloaden ja auch kaum einen Sinn.
Gruss & dank auch für weitere Tips
Eda
hi,
das stimmt natürlich, doch wäre es andererseits sehr vernünftig, wenn der IE mit dem fortfahren im Script darauf warten würde, dass die vorhergehende Aufgabe (das Reload der anderen Seite) auch beendet wurde. Das tut er nicht. Mozilla aber schon.
und mal angenommen, die seite im anderen frame könnte gar nicht neu geladen werden, was dann? script an dieser stelle "hängen lassen?".
ich halte das schon für vernünftig so - einem anderen fenster/frame wurde die anweisung "lade dich neu" gegeben, da hat sich dieses andere fenster selbst drum zu kümmern. es gibt jetzt keinen grund mehr, die weitere abarbeitung des scriptes im eigentlichen fenster zu blockieren.
Keine Bange, das ist alle auf meiner Seite, sonst hätte das Reloaden ja auch kaum einen Sinn.
warum du dann in das andere dokument nichts einfügen kannst, wäre dann aber fraglich.
gruß,
wahsaga
ich verlange nicht, dass der IE anhält bis die andere Seite fertiggeladen ist. Alles was ich will, ist, dass er den Scrollauftrag nicht ignoriert. Mozilla kann es doch auch.
Natürlich könnte ich in die entsprechenden Seiten ein kurzes onload-Script einfügen, doch geht das in diesem Fall aus "politischen" Gründen nicht, die hier nicht näher erläutert zu werden brauchen.
Gruss, Eda
Schliesslich springt eine Seite, wenn sie per Browser reloaded wurde, auch automatisch wieder an die vorige Stelle und nicht auf Seitenanfang.
Genau das will ich, wenn ich sie von einem anderen Frame aus per JS reloaden lasse. Ist das zuviel verlangt?
Eda
hi,
Schliesslich springt eine Seite, wenn sie per Browser reloaded wurde, auch automatisch wieder an die vorige Stelle und nicht auf Seitenanfang.
Genau das will ich, wenn ich sie von einem anderen Frame aus per JS reloaden lasse. Ist das zuviel verlangt?
offenbar ja.
gruß,
wahsaga