Iframe Anpassung (variable Höhe)

darkkurt

Buh!
ID: 35967
L
20 April 2006
13.132
631
Ich habe folgendes Problem:

Ich möchte ein Bildergalerie-script (4images 1.7.4) umgestallten, das es html-Dateien anzeigt.

Das klappt soweit auch ganz gut, das Script ist auch für Laien gut anpassbar. Nur habe ich jetzt folgendes Problem (ich muss leider etwas ausholen, damit es keine Missverständnisse gibt):

Das einbinden von unterschiedlichen Dateiarten geht in diesem Script über templates. Um *.html-Dateien auszugeben, benötigt man auf jeden Fall einen iframe, das template sieht also so aus:
HTML:
<!-- Template file for html Files -->
<IFRAME name="inhalt" src="{media_src}" width="600" height="500" scrolling="auto" frameborder="0" marginheight="2" marginwidth="2">
</IFRAME>
<BR>

nun sind aber nicht alle html-Dateien gleich lang und passen in einen iframe mit angegebener Größe. Da ich wenn irgend möglich auf Scrollbars beim Frame verzichten will, habe ich ein bisschen gegoogelt und folgende js-Lösung für variable iframe-Höhen gefunden:

1. in die globale Header-Datei des scripts packe ich folgendes script:

HTML:
<script type="text/javascript">
function resize_iframe() {
self.document.getElementById('inhalt').style.height = document.getElementById('text').offsetHeight;
}
</script>

2. das oben vorgestellte Template für *.html-Dateien erweitere ich wie folgt:

HTML:
<!-- Template file for html Files -->
<IFRAME onload="resize_iframe();" name="inhalt" src="{media_src}" width="600" scrolling="no" frameborder="0" marginheight="2" marginwidth="2">
</IFRAME>

3. Die auszugebende Datei sieht dann so aus:

HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<META http-equiv="CONTENT-TYPE" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
function resize_iframe() {
parent.document.getElementById('inhalt').style.height = document.getElementById('text').offsetHeight;
}
</script>
<TITLE>titel</TITLE>
</HEAD>
<BODY onload="resize_iframe();">
<DIV id="text">
<!-- Inhalte -->
 </DIV>
 </BODY>
</HTML>

Und - Oh Wunder, trotz nur rudimentärer Kenntnisse in JS, funzt das Script auf Anhieb auf IE 7 und Opera 9. Nur im Firefox 2 nicht. Kann mir einer helfen, das Javascript so anzupassen, das auch in Firefox der iframe resized wird?
 
IE und Opera verwenden getElementsById nur teilweise richtig, indem sie nach id und name attributen suchen.

Versuch mal dem iframe eine id zu geben. Dann sollte es in jedem Browser gehen.

<IFRAME name="inhalt" src="{media_src}" width="600" height="500" scrolling="auto" frameborder="0" marginheight="2" marginwidth="2">
</IFRAME>
[...]
<script type="text/javascript">
function resize_iframe() {
self.document.getElementById('inhalt').style.height = document.getElementById('text').offsetHeight;
}
 
IE und Opera verwenden getElementsById nur teilweise richtig, indem sie nach id und name attributen suchen.

Versuch mal dem iframe eine id zu geben. Dann sollte es in jedem Browser gehen.

Hammer - das ist es!

Hätte ich auch selber drauf kommen können - gestern hatte ich dem Div in der Inhaltsdatei probeweise statt "id" einen "name" gegeben - anders 'rum hätte ich es auch mal versuchen sollen.

Danke dir sehr - ich dachte schon, dass es keine Lösung gibt ;)