Seite blättern im iframe
Linuchs
- html
Moin,
habe hier einen verblüffenden Effekt. Im iframe werden Veranstaltungstermine angezeigt. Nun scrolle ich runter und kann unten auf die Schaltfläche nächste Seite 2
klicken.
Die erscheint auch, aber - da die parent-Seite nichts mitbekommt - ich schaue auf das Ende der Seite 2 anstatt auf den Anfang.
Gibt's da eine Möglichkeit, innerhalb des iframe auf den Anfang zu positionieren?
Linuchs
Hi,
habe hier einen verblüffenden Effekt. Im iframe werden Veranstaltungstermine angezeigt. Nun scrolle ich runter und kann unten auf die Schaltfläche
nächste Seite 2
klicken.Die erscheint auch, aber - da die parent-Seite nichts mitbekommt - ich schaue auf das Ende der Seite 2 anstatt auf den Anfang.
Gibt's da eine Möglichkeit, innerhalb des iframe auf den Anfang zu positionieren?
ja, verzichte auf die Spielerei, mit Javascript die Höhe des Elternfensters anpassen zu wollen. Tut man das nämlich nicht (z.B. weil Javascript deaktiviert ist), verhält sich das Seiten-Gefüge ganz normal: Man scrollt im iframe nach unten, klickt auf den Next-Page-Button, die nächste Seite wird geladen und steht, wie erwartet, am Seitenanfang.
Ich dachte deshalb zunächst, das von dir beschriebene Verhalten könnte browserspezifisch sein und hab's stattdessen mal im Firefox versucht (der darf Javascript). Und da irritierte mich, dass der Scrollbalken des iframe plötzlich verschwand, als der iframe-Inhalt fertig geladen war, dafür hatte des Elterndokument plötzlich einen.
Und dann passiert genau das, was du beschrieben hast. Im iframe wird ein neues Dokument geladen, das Elterndokument kriegt davon aber nichts mit und bleibt an seiner momentanen Scroll-Position (ganz unten) stehen.
Mögliche Abhilfe:
a) Wie schon beschrieben, die Höhenanpassung weglassen. Und wenn man sie schon macht, müsste man sie nach jedem Laden einer neuen Seite im iframe erneut machen, weil die Höhe der Dokumente im iframe immer unterschiedlich ist.
b) Nach dem Laden des Dokuments im iframe (z.B. als Reaktion auf das load-Event im iframe) die Scroll-Position des Elternfensters wieder auf 0 setzen.
c) Auf die Teilung der Inhalte ganz verzeichten und die Einbettung serverseitig vornehmen, anstatt per iframe. Das wäre für mich die bevorzugte Lösung.
Schönen Sonntag noch,
Martin
Hallo Martin,
danke für deinen Test und den ausführlichen Rat.
a) ... Und wenn man sie schon macht, müsste man sie nach jedem Laden einer neuen Seite im iframe erneut machen, weil die Höhe der Dokumente im iframe immer unterschiedlich ist.
Gerne. Aber die Höhen-Anpassung muss vom parent gemacht werden, so weit ich weiss. Wie erfährt parent vom Neuladen einer Seite in seinem iframe?
b) Nach dem Laden des Dokuments im iframe (z.B. als Reaktion auf das load-Event im iframe) die Scroll-Position des Elternfensters wieder auf 0 setzen.
ja, des Elternfensters. Frage wie bei a). Habe der Seite im iframe dieses unten angehängt:
<p><a href="#top">nach oben</a></p>
Bei Klick bewegt sich gar nichts. Ohne Klick natürlich auch nicht ;-)
c) Auf die Teilung der Inhalte ganz verzeichten und die Einbettung serverseitig vornehmen, anstatt per iframe. Das wäre für mich die bevorzugte Lösung.
Ja, eine zweite Lösung. Auf den iframe kann ich nicht verzichten für Domains ohne PHP.
Und ob die "üblichen" Vereins-Webmaster in PHP eingreifen können, ist auch noch die Frage.
Linuchs
Hi,
a) ... Und wenn man sie schon macht, müsste man sie nach jedem Laden einer neuen Seite im iframe erneut machen, weil die Höhe der Dokumente im iframe immer unterschiedlich ist.
Gerne. Aber die Höhen-Anpassung muss vom parent gemacht werden, so weit ich weiss.
muss sie das wirklich? Meines Wissens kann man über die parent-Eigenschaft des window-Objekts auf das übergeordnete Fenster zugreifen und so Funktionen aufrufen, die dort definiert sind. In einem "echten" Frameset habe ich das sogar selbst schon gemacht, ist aber lange her.
Wie erfährt parent vom Neuladen einer Seite in seinem iframe?
Indem iframe sich bei ihm meldet, wie oben angedeutet.
b) Nach dem Laden des Dokuments im iframe (z.B. als Reaktion auf das load-Event im iframe) die Scroll-Position des Elternfensters wieder auf 0 setzen.
ja, des Elternfensters. Frage wie bei a).
Antwort wie bei a). ;-)
Habe der Seite im iframe dieses unten angehängt:
<p><a href="#top">nach oben</a></p>
Bei Klick bewegt sich gar nichts.
Natürlich nicht. Das im iframe angezeigte Dokument ist ja innerhalb des iframes schon an der top-Position. Es ist das Elternfenster, das nach unten gescrollt ist. Den Link zu "#top" oder auch nur "#" müsstest du also im Elternfenster direkt unterhalb des iframes notieren.
Ohne Klick natürlich auch nicht ;-)
Ach was. Wer hätte das gedacht ... *grins*
So long,
Martin
c) Auf die Teilung der Inhalte ganz verzeichten und die Einbettung serverseitig vornehmen, anstatt per iframe. Das wäre für mich die bevorzugte Lösung.
Ja, eine zweite Lösung. Auf den iframe kann ich nicht verzichten für Domains ohne PHP.
Ein Webserver mit PHP kostet heutzutage nichts mehr. Die eingesparten Kosten dürften zudem von den Arbeitskosten, die anfallen nur um die Nachteile der <iframe>-Lösung im akzeptablen Bereich zu halten, um ein Vielfaches übertroffen werden. Und das Ergebnis wird trotzdem um ein Vielfaches schlechter sein. Mein gut gemeinter Rat: Erspar dir diesen Höllenritt.
Hallo und guten Tag,
Moin,
habe hier einen verblüffenden Effekt. Im iframe werden Veranstaltungstermine angezeigt. Nun scrolle ich runter und kann unten auf die Schaltfläche
nächste Seite 2
klicken.Die erscheint auch, aber - da die parent-Seite nichts mitbekommt - ich schaue auf das Ende der Seite 2 anstatt auf den Anfang.
Gibt's da eine Möglichkeit, innerhalb des iframe auf den Anfang zu positionieren?
Linuchs
Die einfachste Lösung wäre es, die Hauptseite mit Parameter neu aufzurufen und die gibt den dan an ihr I-Frame weiter. Dazu muss der Link im I-Frame dann ein Target-Attribut haben auf Parent oder Top. Damit auch der Cache mitspielt, kannst Du noch einen Dummy-Parameter hinzufügen Lassen, vorzugsweise &time=$timestamp
Grüße
TS
Damit auch der Cache mitspielt, kannst Du noch einen Dummy-Parameter hinzufügen Lassen, vorzugsweise &time=$timestamp
Auf diese Weise lässt du den Cache aber gerade nicht mitspielen. Cache-Invalidation ist zugegebenermaßen ein schwieriges Problem, leider sind Caches aber für die Performance unerlässlich, der vollständige Verzicht ist also nur eine unbefriedigende Lösung...
Hallo 1unitedpower,
Cache-Invalidation ist zugegebenermaßen ein schwieriges Problem, [...]
Mein Favorit ist da übrigens ganz klar No 2: „there are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.“ ;-)
LG,
CK
Hallo und guten Tag,
Damit auch der Cache mitspielt, kannst Du noch einen Dummy-Parameter hinzufügen Lassen, vorzugsweise &time=$timestamp
Auf diese Weise lässt du den Cache aber gerade nicht mitspielen.
Klar, das war der Sinn der Übung!
Da die Rahmenseite nur ein paar Bytes HTML hat, wohl kaum ein Problem. Ihre Subrequests (Bilder, Objekte, usw.) sind davon ja nicht betroffen. Die werden weiterhin cached!
Cache-Invalidation ist zugegebenermaßen ein schwieriges Problem, leider sind Caches aber für die Performance unerlässlich, der vollständige Verzicht ist also nur eine unbefriedigende Lösung...
Und nun noch eine Bitte @1unitedpower und @Christian Kruse:
Ich bin jetzt absichtlich ca. ein Jahr ausgestiegen und daher nicht mehr im Kontext. Ich fühle mich also ungefähr so, wie ein rudimentär vorgebildeter Mitleser des Forums. Und ich fühle mich damit beschissen in Bezug auf die gewälten sogenannten Fachbegriffe udn auch auf die hingeschmissenen Links. Diese Knappheit vergällt einem das Forum!
Ich habe es anders herum auch versucht, damit Ihr einen Spiegel habt für Euer Verhalten. Ich habe dem Martin auf seine Frage, ob ich das näher erläutern möge, "nö" geantwortet. Dafür habe ich Minuspunkte kassiert. Klar, die Karikatur eures Verhaltens ist Euch dann doch noch aufgefallen!
**Also bitte in Zufunkt etwas expliziter! **
Und ja, ich will das beim Offline-Treffen diskutieren! Eigens dafür kratze ich zur Not meine allerletzten Euros zusammen!
Und nein! Es ist nicht böse gemeint. Ich finde nur, dass die Sprechweise im Forum wieder auf eine allgemeinverständliche Plattform zurückkommen muss. Davon sind "Spezialistenthreads" vielleicht auszunehmen. Vielleiocht sollten wir die dann aber auch besonders kennzeichnen und jeden Quark, der zur (menschlichen) Drift führt daraus entfernen?
In diesem Sinne
Freundschaftlichste Grüße
TS
Hallo Tom,
Und nun noch eine Bitte @1unitedpower und @Christian Kruse:
Ich bin jetzt absichtlich ca. ein Jahr ausgestiegen und daher nicht mehr im Kontext.
viel hast du damit aber nicht versäumt - ist jedenfalls mein Eindruck.
Und ich fühle mich damit beschissen in Bezug auf die gewälten sogenannten Fachbegriffe udn auch auf die hingeschmissenen Links. Diese Knappheit vergällt einem das Forum!
Ja, eine Antwort, die lediglich aus einem Buzzword oder einem Link besteht, finde ich auch alles andere als vorbildlich - zumindest ein, zwei Sätze der Erläuterung gehören in aller Regel dazu.
Ich verstehe aber nicht, wieso du das gerade CK und 1UP vorwirfst, und warum gerade jetzt. Zumindest in diesem Thread finde ich keinen Beitrag, auf den der Vorwurf passt.
Jemand anders, der auch gern sehr knapp (IMO oft zu knapp) antwortet, ist Gunnar Bittersmann. Seine Antworten sind oft wertvoll, aber oft auch auf einem Niveau, das dem Fragesteller zu hoch ist.
Ich habe es anders herum auch versucht, damit Ihr einen Spiegel habt für Euer Verhalten. Ich habe dem Martin auf seine Frage, ob ich das näher erläutern möge, "nö" geantwortet.
Yo. Das fand ich schon ein bisschen frech. Knappe Antworten geben ist schon ... naja, enttäuschend. Aber auf konkrete Nachfrage auch noch rundheraus mit "nö" zu reagieren, ist etwas unverschämt. Das tun die von dir Genannten nämlich nicht.
Und nein! Es ist nicht böse gemeint.
Natürlich nicht. Es ist Kritik, und Kritik pickt oft nur die negativen Aspekte raus. Solange man das in einer anständigen Weise äußert, ist das auch völlig okay.
Ich finde nur, dass die Sprechweise im Forum wieder auf eine allgemeinverständliche Plattform zurückkommen muss. Davon sind "Spezialistenthreads" vielleicht auszunehmen. Vielleiocht sollten wir die dann aber auch besonders kennzeichnen und jeden Quark, der zur (menschlichen) Drift führt daraus entfernen?
Hmm. Da kann ich dir wieder nicht ganz folgen. Klar, es gibt ab und zu Threads, die auf ein fachlich ziemlich abgehobenes Niveau abdriften, aber das ist - meiner Wahrnhmung nach - doch eher die Ausnahme.
So long,
Martin
Hallo,
Aber auf konkrete Nachfrage auch noch rundheraus mit "nö" zu reagieren, ist etwas unverschämt.
Hier kann man das „etwas“ auch völlig weglassen.
Gruß
Kalk
Hallo,
Aber auf konkrete Nachfrage auch noch rundheraus mit "nö" zu reagieren, ist etwas unverschämt.
Hier kann man das „etwas“ auch völlig weglassen.
Dann komm zum Treffen und lass uns das ausdiskutieren, bis das Bier oder dar Kaffee oder so nicht mehr schmeckt... :-P
...
Grüße
TS
Hallo,
lass uns das ausdiskutieren,
wüsste nicht, was es da zu diskutieren gäbe
Gruß
Kalk
Hallo und guten Tag,
lass uns das ausdiskutieren,
wüsste nicht, was es da zu diskutieren gäbe
Ich hab's gelesen. Prost Demokratie und Diskussionsfähigkeit. Für eine ausführliche Antwort habe ich jetzt leider keine Zeit, stelle mich dieser aber später gerne nochmal. Please keep in mind an remind me :-)
Grüße
TS
Hallo,
Prost Demokratie und Diskussionsfähigkeit.
Oha, jetzt drohst du mit der Demokratiekeule? Mit Demokratie hat deine unverschämte Antwort ja nun gar nix zu tun, mehr sag ich jetzt nicht mehr dazu.
Gruß
Kalk
Hallo und guten Abend,
Prost Demokratie und Diskussionsfähigkeit.
Oha, jetzt drohst du mit der Demokratiekeule? Mit Demokratie hat deine unverschämte Antwort ja nun gar nix zu tun, mehr sag ich jetzt nicht mehr dazu.
Dann komm doch zum Offline-Treffen. Dann können wir gemeinsam vor doe Tür gehen. :-P
Grüße
TS