Cheatah: (DOM) (BROWSER) Höhe von Elementen mit dynamischem Inhalt

Hi,

man nehme einen <iframe id="iframe" src="bla" width="42" height="42">, sowie eine Ressource "bla", welche im Grunde aus <body id="body"><table id="table">...</table></body> besteht. Die Höhe des Inhalts von "bla" sei dynamisch.

Problemstellung: Setze die Höhe des <iframe> auf die _reelle_ Höhe von "bla", nachdem dies geladen ist.

Für Netscape 4 (ein <ilayer> ist auch noch drumherum) und IE 4+ ist die Aufgabe recht leicht zu lösen. Der <ilayer> kriegt eh die richtige Größe :-) und für den IE setze ich aus "bla" heraus:

parent.document.all.iframe.style.setAttribute('height', document.all.table.offsetHeight, 'false')

Nur für DOM finde ich leider keine Lösung, was vielleicht daran liegt, dass ich mit Opera 5.02 teste (was anderes habe ich lokal nicht installiert - dieser Browser ist aber auch Bedingung, wenn's da nicht klappt, kann ich es mit Mozilla & Co. eh vergessen). Ich finde lediglich die zuvor gesetzten Eigenschaften, alles andere ist "undefined" (insbesondere fast(!) immer offsetHeight); auch style="height:auto;" brachte nichts. Zudem schlagen alle Versuche, über setAttribute() u.ä. die Höhe auf einen neuen Wert zu setzen fehl, auch wenn ein nachfolgendes Auslesen den frisch gesetzten Wert nennt.

Unnötig zu sagen, dass ich im Archiv nur Lösungen à la "probier mal" sowie Hinweise "ab Opera 5.12" gefunden habe ;-) und auch eine Google-Suche erfolgarm blieb... ich finde nur Methoden, eine vorher definierte Höhe zu ermitteln, nicht aber eine reelle.

Falls es ein nur Brett vor dem Kopf ist, könnte mir das bitte mal jemand entfernen? Gerne mit dem RTFM-Hammer :-)

Cheatah

  1. Hallo Cheatah

    Nur für DOM finde ich leider keine Lösung, was vielleicht daran liegt, dass ich mit Opera 5.02 teste (was anderes habe ich lokal nicht installiert - dieser Browser ist aber auch Bedingung, wenn's da nicht klappt, kann ich es mit Mozilla & Co. eh vergessen). Ich finde lediglich die zuvor gesetzten Eigenschaften, alles andere ist "undefined" (insbesondere fast(!) immer offsetHeight); auch style="height:auto;" brachte nichts. Zudem schlagen alle Versuche, über setAttribute() u.ä. die Höhe auf einen neuen Wert zu setzen fehl, auch wenn ein nachfolgendes Auslesen den frisch gesetzten Wert nennt.

    vergiß es, Opera kann das einfach nicht.

    Das Auslesen der Werte geht mit

    iframe.document.getElementById("table").style.pixelHeight;

    das klappt. Ein Setzten ist aber nicht möglich.

    Netscape 6 kann das aber. Versuche es mit
    document.getElementById('iframe').style.height=iframe.document.getElementById("table").offsetHeight;

    Viele Grüße

    Antje

    1. Hi Antje,

      vergiß es, Opera kann das einfach nicht.

      ah, okay. Das "beruhigt" mich...

      Netscape 6 kann das aber. Versuche es mit
      document.getElementById('iframe').style.height=iframe.document.getElementById("table").offsetHeight;

      Danke. Genau diesen Code (naja, von 'iframe' aus, also mit parent links und ohne iframe rechts) hatte ich bereits getestet - jetzt weiß ich auch, warum es erfolglos war :-)

      Gut, leben wir halt mit einem ungünstigen Ergebnis, hängt ja nicht die Welt von ab. Merci!

      Cheatah