Kann man Iframes relativ in der Grösse darstellen?

squeeler

Mitglied
Hallo, zunächst einmal schöne Grüsse, denn dies ist mein erster Eintrag hier im Fo-
rum. Ich habe folgende Frage: ist es möglich und wenn dann wie, die Höhenangabe
eines Iframes relativ zu setzen? Der Iframe soll entsprechend nur die Höhe des In-
haltes annehmen. Selfhtml zeigt mir diesbezüglich keine zufriedenstellenden Ergeb-
nisse in der Suche an. Ich weiss, dass der Inhalt ja aus einer separaten Datei kommt,
entsprechend wird die Iframe-Darstellung überwiegend durch die Scroll-Funktion un-
terstützt, jedoch würde ich gern wenn es irgendwie geht, diesen Umstand umgehen
und ihn dynamisch machen, da es mir einiges erleichtern würde, was mein bisheri-
ges Design angeht.
Vielen Dank für Eure Aufmerksamkeit und die hoffentlich zahlreich eintrudelnden Vor-
schläge zur Lösung meines Problems *hehe*.
 
Hallo squeeler

Nehmen wir mal einen solchen iframe auseinander, sehen wir, dass wir klare Grössenangaben haben!
CODE
<iframe src="http://www.xxx.com/feeds/88x31.php" name="88x31" id="88x31" width="88" height="31" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" title="Beispiel"><a href="http://www.xxx.com">Beispiel</a></iframe>



Sehen wir uns also ein paar klassische Formate an

QUOTE
88x31.php" name="88x31" id="88x31" width="88" height="31" marginwidth="0" marginheight="0" scrolling="no" frameborder="0"

120x80.php" name="120x80" id="120x80" width="120" height="80" marginwidth="0" marginheight="0" scrolling="no" frameborder="0"

468x60.php" name="468x60" id="468x60" width="468" height="60" marginwidth="0" marginheight="0" scrolling="no" frameborder="0"

336x280.php" name="336x280" id="336x280" width="336" height="280" marginwidth="0" marginheight="0" scrolling="no" frameborder="0"

160x600.php" name="160x600" id="160x600" width="160" height="600" marginwidth="0" marginheight="0" scrolling="no" frameborder="0"


und stellen wir uns die Frage, ob wir die Höhen und die Breiten verändern können? Ich denke ja und dies nach der Formel:

bxh.php" name="bxh" id="bxh" width="b" height="h" marginwidth="0" marginheight="0" scrolling="no" frameborder="0"

wobei wir hier h für Höhe und b für Breite verwendet haben!
 
Hmm...habe es noch nicht ausprobiert, allerdings sieht es dennoch nur nach einer
variablen Angabe anhand der Dateinamen aus, oder habe ich das nicht kapiert?

Der Hintergrund ist der, dass ich das Ganze als Template für eine Menuführung ge-
bastelt habe, wobei ich die Grösse des Menus natürlich im Vorfeld nicht erahnen kann
und auch keine Supergrössen zur Sicherheit einplanen möchte. Entsprechend soll die
Grösse abhängig von der Tabelle in der Source-Datei des Iframes sein, dies jedoch
automatisch, da ich ja die genaue Grösse der Tabelle aufgrund der automatischen
Vergrösserung der Tabelle durch <td background="..."> nicht kenne.
Wenn Du die Sache ganz anders gemeint hast und Dein Vorschlag die Lösung meines
Problems schon beinhaltet, so erklär mir doch bitte ein wenig genauer, ob es sich bei
den Angaben von b und h nur um Variablen handelt oder ob es sich um
eine relative Maßangabe durch spezielle Dateibezeichnung dreht...

Danke aber schonmal für die Hilfe!
 
Dem IFrame die Höhe gemäss seinem Inhalt zu geben, wurde schon mal diskutiert: http://www.webmasterforum.ch/topic-527.html .

Mindestens für IE und Firefox gehts aber auch einfach: die Anweisung

<body onload="parent.document.getElementById('frmTest').height = document.body.scrollHeight+35;">

in der IFrame-Seite passt die Höhe an, wobei 'frmTest' die ID des IFrames in der Parent-Seite ist.

Griessli
Irene
 
Hallo squeeler

Wende bei den Höhen und Breiten Prozente statt Pixelwerte an!

http://www.w3.org/TR/REC-html40/present/frames.html

Here is a simple frame document:
CODE
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
<HTML>
<HEAD>
<TITLE>A simple frameset document</TITLE>
</HEAD>
<FRAMESET cols="20%, 80%">
<FRAMESET rows="100, 200">
<FRAME src="contents_of_frame1.html">
<FRAME src="contents_of_frame2.gif">
</FRAMESET>
<FRAME src="contents_of_frame3.html">
<NOFRAMES>
<P>This frameset document contains:
<UL>
<LI><A href="contents_of_frame1.html">Some neat contents</A>
<LI><IMG src="contents_of_frame2.gif" alt="A neat image">
<LI><A href="contents_of_frame3.html">Some other neat contents</A>
</UL>
</NOFRAMES>
</FRAMESET>
</HTML>


that might create a frame layout something like this:
 
Danke Leutz, aber...

@Irene:

Das funzt mit der ID-Vergabe, jedoch haben Iframes immer eine Mindesthöhe, was
bedeutet, dass der selbst ohne Höhenangabe immer auf eine Mindesthöhe von (ge-
schätzten) 250 Pixeln geht. Dein Beispiel zählt noch etwa 35 Pixel dazu, lasse ich die-
se weg, ist er leider immer noch zu hoch, keine Ahnung, ob das Verhältnis anders ist,
sobald die Tabelle grösser als die Mindesthöhe des Iframe ist, das werde ich jedoch
mal sogleich testen.

EDIT:
Leider funzt das auch nicht, sobald die Tabelle der Inhaltsdatei grösser als die Iframe-
Mindesthöhe ist *schnüff*.

@Lucas:

Mit "%" hab ich es auch versucht, es gibt ja auch im Frameset die Möglichkeit eines
Platzhalters a lá "*", jedoch bringt das hier leider gar nichts. "%" nimmt er nur mit
absoluten Zahlenwerten davor an und ich will den Iframe ja nicht relativ zur Seite
sondern relativ zum Inhalt anpassen.

Ich werde es dennoch weiterversuchen und falls es denn irgendwie klappen sollte, des
Rätsels Lösung zur beruhigenden Anschauung aller posten, sofern denn irgend mög-
lich, wenn nicht ein komplett anderes Konzept für mein Vorhaben her muss. Aber bes-
ten Dank schonmal, ich sehe, hier kann man sich gut aufgehoben fühlen, wenn man
mal nicht weiterkommt (an viele schlaflose Nächte in der Vergangenheit denk, wo
Ausprobieren statt professionelle Hilfe maßgeblich war *hehe*).
 
QUOTE (Lucas Wyrsch @ Do 9.12.2004, 9:59) Hallo squeeler

Wende bei den Höhen und Breiten Prozente statt Pixelwerte an!

http://www.w3.org/TR/REC-html40/present/frames.html

Here is a simple frame document:

CODE
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
<HTML>
<HEAD>
<TITLE>A simple frameset document</TITLE>
</HEAD>
<FRAMESET cols="20%, 80%">
<FRAMESET rows="100, 200">
<FRAME src="contents_of_frame1.html">
<FRAME src="contents_of_frame2.gif">
</FRAMESET>
<FRAME src="contents_of_frame3.html">
<NOFRAMES>
<P>This frameset document contains:
<UL>
<LI><A href="contents_of_frame1.html">Some neat contents</A>
<LI><IMG src="contents_of_frame2.gif" alt="A neat image">
<LI><A href="contents_of_frame3.html">Some other neat contents</A>
</UL>
</NOFRAMES>
</FRAMESET>
</HTML>


that might create a frame layout something like this:

Hier geht es um IFRAMES und nicht um FRAMES wie in deinem Beispiel ... das ist ein kleiner, aber feiner Unterscheid. Bei IFrames gibt es meines Wissens keine Höhenangabe in Prozent.
 
Bei mir hats mit Javascript wunderbar funktioniert:

CODE <script language="JavaScript">
<!--
function calcHeight()
{
var the_height=
document.getElementByID('the_iframe').contentWindow.document.body.scrollHeight;

document.getElementById('the_iframe').height=the_height;
}
//-->
</script>

<iframe width="700" id="the_iframe"
onLoad="calcHeight();"
src="test.html"
scrolling="NO"
frameborder="1"
height="1">
</iframe>

 
@Rainer:

Gibt es doch. Bin zwar kein Fachmann, aber ein Probierfreudiger Mensch *hehe*, da
ich auch in meiner Verzweiflung versucht habe, ohne Zahlenwert vor dem "%"-Zei-
chen der Lösung näher zu kommen. Ging nicht. Die prozentuale Höhe bezieht sich
dann jedoch auf die absolute Höhe der Tabelle, in der sich der Iframe befindet. Zu-
mindest tut er das bei mir, nehme allerdings an, dass sich ohne Tabelle die Höhe dann
auf die Seitengrösse bezieht.

Ja ja, Iframes sind schon ne tolle Sache, aber auch irgendwie ne Wissenschaft für
sich. Trotz netter Möglichkeiten, die ich dann irgendwann in meiner Laufbahn als Unter-
Semi-Amateur als eine Art Klick empfunden habe, mutieren sie doch zu einer Art un-
zulänglicher Möglichkeit, die zunächst unbegrenzte Design-Varianten vorgaukelt, lei-
der aber (meines Erachtens) bei ihrer Einführung den wesentlichen Kern nicht bedacht
hat, dass nämlich das durch sie geöffnete neue Fenster Aussichten auf Dinge wirft,
die leider nicht durch sie erreichbar sind, jedoch nun schon einmal die Sehnsüchte
eines kleinen Webdesigners geweckt haben *lol*.

Wisst Ihr was? Ich hau den Rechner einfach zu Brei, dann hat sich das Problem *hehe*.
 
@magadoo:

Also zum einen Gibt er mir ne Fehlermeldung an, da er das Element nicht kennt, wo-
bei es nur der IE nicht annimmt, zum Anderen jedoch zeigt er nur nen Iframe mit der
Höhe 1 an, obwohl ich als src die Inhaltsdatei angegeben habe.
 
QUOTE (squeeler @ Do 9.12.2004, 11:08)Das funzt mit der ID-Vergabe, jedoch haben Iframes immer eine Mindesthöhe, was bedeutet, dass der selbst ohne Höhenangabe immer auf eine Mindesthöhe von (geschätzten) 250 Pixeln geht.

Also bei mir haben IFrames keine Mindesthöhe. Ich kann problemlos ein IFrame mit der Grösse 10x10px machen - macht zwar keinen Sinn, weil man den Inhalt so nicht erkennen kann, aber gehen tuts.

Griessli
Irene
 
@Irene:

Mindesthöhe, sofern keine absolute Höhenangabe gemacht wird...sorry, falsch aus-
gedrückt. Lässt man "width" und "height" weg, hat man nen Iframe mit ich schätze
in etwa 350 x 250 Pixeln.
 
Sorry hatte den falschen Code für dich gepostet ;-)

Versuchs mal hiermit:

CODE <script language="JavaScript">
<!--
function calcHeight()
{
document.getElementById('the_iframe').height=window.frames.the_iframe.document.body.scrollHeight;
}
//-->
</script>

<iframe width="700" id="the_iframe" onLoad="calcHeight();" src="test.htm" scrolling="NO" frameborder="1" height="1">
</iframe>
 
Korrektur...habe den Jubel-Post geändert:

Leider funzt das nur für den IE, Mozilla und Opera ziehen leider nicht mit, aber das
hat mich schonmal Einiges weitergebracht. Mich kotzt das dermaßen an, dass die ei-
gentlich zu bevorzugenden Browser (Mozilla, etc...alles ausser IE!), bei Weitem nicht
die Funktionen unterstützen wie der Internet Explorer...da sollte es echt mehr Stan-
dards geben.
 
Zurück
Oben