Tim Tepaße: Die Höhe von iFrames an den Inhalt anpassen

Beitrag lesen

Hallo Patrick,

Ich würde gern eine hmtl-datei in einem iFrame so darstellen, dass dieser
sich der Datei anpasst, ich jedoch im Frame selber nicht scrollen brauch.

Verständlich. Ich an Deiner Stelle würde jedoch den Quelltext der Datei
im iFrame bereits im Editor oder auf dem Server in den Quelltext der
Datei mit dem iFrame einsetzen (natürlich ohne head und body), damit
ich mich nicht mit dem iFrame rumärgern muß und nur ein HTML-Dokument
ausgeliefert werden muß. Gute Editoren habe dafür eine Include-Technik;
auf dem Server geht das mittels SSI, PHP oder Perl bzw. sonstiger
Programmiersprachen.

Als Lösung hatte ich mir überlegt, eventuell irgendwie die Höhe und Breite
der html-datei herauszubekommen und den iFrame dadurch anzupassen.

Die Höhe und die Breite der grafischen Anzeige eines HTML-Dokumentes
richten sich nach der Höhe und Breite des vom Anzeigefenster zu Verfügung
gestellten Platzes. Normalerweise ist das ein Browser, in Deinem Fall
sind es die vordefinierten Höhen und Breiten des iFrames.

Du willst also die Höhe und Breite der im iFrame dargestellten Seite
auslesen, damit Du die Höhe und die Breite des iFrames anpassen kannst,
damit Du die neue Höhe und Breite der im iFrame dargestellten Seite
auslesen kannst, damit Du erneut die Höhe und die Breite des iFrame
anpassen kannst, damit Du ....

Du drehst Dich im Kreis. ;-)

Du brauchst zumindest eine fixe Größe, damit Du Deine Berechnungen
anpassen kannst. Ich schlage mal die Breite des iFrames vor. Dadurch
hat die im iFrame angezeigte Seite automatisch eine Breite und dadurch
auch eine bestimmte Länge. Dann müßte in der Theorie die Länge des iFrames
angepaßt werden.

Jedoch fehlen mir dummerweise jegliche Programmiertechnischen Befehle bzw
Kenntnisse dazu, so dass ich leider aufgeben musste.

Das ganze muß auf Seitendes Clients, sprich des Browsers stattfinden. Die
dazugehörige Programmiersprache nennt sich Javascript. Deine Aufgabe
zerfällt nun in folgende Teilschritte:

(1) Definition eines iFrames mit fester Breite und Höhe.
(2) Auslesen der Höhe des im iFrame dargestellten Dokumentes.
(3) Ändern der Höhe des iFrames.

(1) ist kein Problem, da das ganze im HTML-Quelltext stattfindet.

(3) dürfte auch kein Problem sein. Man spricht den iFrame im DOM
irgendwie an, bespielseise über eine ID und ändert dann dessen Höhe.

(2) ist der Casus Knacktus. So wie ich das sehe, gibt es keine Möglichkeit,
herauszubekommen, wie lang ein Dokument ist. Es gibt zwar die Eigenschaft
innerHeight (http://selfhtml.teamone.de/javascript/objekte/window.htm#inner_height),
aber diese bezieht sich nur auf die Höhe der Anzeigefläche nicht auf die
Höhe des tatsächlichen Dokumentes, von dem im Falle von Übergröße ja nur
ein Teil im Anzeigebereich zu sehen ist.

Man muß also irgendwoanders her wissen, wie lang das eingebettete Dokument
ist. Dies geht streng genommen nur bei eingebetteten Bildern. Die Länge von
HTML-Dokumente ist von zu vielen Faktoren abhängig, von dem Inhalt, von
der zur Verfügung stehenden Breite, von der Schriftgröße, von ewaigem
Text-Zoom beim Anwender.

Abgesehen davon ist es auch sinnlos. Weiß man vorher, wie lang das
eingebettete HTML-Dokument ist, kann man diese Angaben auch direkt bei
der Definition des iFrames benutzen, anstatt sie nachträglich dynamisch
zu ergänzen.

Wie gesagt, an Deiner Stelle würde ich auf iFrames verzichten und obige
Lösung benutzen, d.h. nur ein HTML-Dokument ausliefern. Da HTML und CSS
eingebaute Fluidität haben, paßt sich das Dokument der Anzeigefläche des
Browsers an. Wenn dann da ein Scrollbalken ist, ist es der gewohnte des
Browsers und nicht einem mittem im Dokument.

  • Tim
--
tft-bm: iFrames anpassen