# inline frame groesse durch geladene seite aendern....wie?



## anna sophiea (21. September 2004)

Hallo miteinander

Ich muss verschieden hohe htm seiten in ein Inlineframe laden.

Da ich im Frame keine Scrolleiste verwenden moechte braeuchte ich eine Anweisung die dem Frame die jeweilige Hoehe der geladenen Seite zuweist.

Kann mir vielleicht jemand helfen?   , bitte, danke.

ns.
Ich spreche kein html arbeite mit Frotpage 2003 und Dreamweaver Mx 2004.


----------



## Sven Mintel (21. September 2004)

Schau mal hier hinein , vielleicht hilft dir das weiter.

Ein wenig Eigeninitiative wird dabei allerdings vonnöten sein....mit den Mitteln von FP und DW alleine wird das nix


----------



## anna sophiea (21. September 2004)

Hallo fatalus,

danke fuer Deinen Hinweis....genau das habe ich gesucht....
koenntest Du mir vielleicht bitte noch etwas weiter helfen?    .

In die Elternseite schreibst Du, soll folgendes script einfuegt werden:



> in die Elternseite:
> 
> ```
> <script type="text/javascript">
> ...


Leider aber weiss ich nicht, wo genau ich diese Scripte bei mir reinschreiben mus... ...

Der Cod von meinem IFrame sieht wie folgt aus:

```
<iframe name="I1" width="100%" height="1000" marginwidth="1" marginheight="1" scrolling="no" border="0" frameborder="0" src="frameset/main_frame1.htm" align="middle">
Ihr Browser unterstützt Inlineframes nicht oder zeigt sie in der derzeitigen Konfiguration nicht an.
</iframe>
```
Koenntest Du mir Vielleicht nochmals helfen....?


----------



## Sven Mintel (21. September 2004)

In der _main_frame1.htm_ musst du den <body>-Tag ersetzen durch:
	
	
	



```
<body onload="parent.resize_me('I1')">
```
 .

Der Rest gehört wie gesagt in die Elternseite des <iframe>'s.....das ist jene Seite, in welcher das <iframe......></iframe> drinnen steht.
Dort packe es am besten irgendwo zwischen die <head></head>-Tags.


----------



## anna sophiea (21. September 2004)

Ich hab den fehler gefunden, musste den cod auch noch in alle zu ladenden Seiten schreiben...... ......!

Rechtherzlichen Dank fuer Deine Hilfe.... .

Nun ergibt sich noch das Problem mit dem Auswandern der geladenen Seite nach links oder rechts und das hast Du auch angeschrieben.....


> Ich hab mir das noch mal angeguckt und festgestellt, dass es wohl besser ist, die Breite fix zu lassen und nur die Höhe zu ändern...die Ergebnisse bei der Breite sind leider ziemlich variabel
> Muss man halt ne Breite nehmen, welche bei allen Seiten passt.


ich weiss leider nicht wie ich das Frame stabilisieren kann....?
Die Seiten die ich lade sind immer gleich breit (die selben Tabellen), aber die wandern immer hin und her.....


----------



## Sven Mintel (21. September 2004)

Dann entferne aus der Funktion resize_me() die mittlere Zeile.....diese ändert die Breite, was dann nicht notwendig ist.


----------



## anna sophiea (22. September 2004)

Mr fatalus.....

vielen vielen Dank......es funktioniert wirklich einwandfrei, es ist fuer mich ein ganz toller Beitrag....  ...!

Danke rechtherzlich, 

anna sophiea.


----------



## meineguete (22. September 2004)

*Tolles Tutorial!*

Ich habe mir die Scripte auch eingebaut, sind wirklich toll

Vielleicht darf ich auch noch zwei Fragen stellen?

Ich habe bei meinen Seiten
	
	
	



```
<meta http-equiv="Page-Enter" content="blendTrans(Duration=1.0)">
```
 eingebaut, so dass die Seiten eingeblendet oder ausgeblendet werden,..........leider aber verliert sich diese Möglichkeit nachdem ich
	
	
	



```
<body onload="parent.resize_me('iframe')">
```
 reinschreibe. Kann ich das irgendwie umgehen?

Und das Zweite wäre, dass wenn ich eine sehr hohe und dann eine neue kleinere Seite ins Frame lade, die höhe vom IFrame leider bestehen bleibt und sich nicht auf die neue kleinere Grösse reduzieret.

Kann mir vielleicht jemand zu diesen Themen weiterhelfen?


----------



## anna sophiea (22. September 2004)

Habe das selbe Problem jetzt auch, der IFrame bleibt in einer bestimmten Hoehe stehen nachdem ich wieder eine kleinere Seite lade......hatte ich zuerst gar nicht gesehn... ....


----------



## Sven Mintel (23. September 2004)

Neuer Tag, neues Skript.....


```
<script type="text/javascript">
<!--
function resize_me()
{
if(document.getElementById)
    {
    try
        {
        intDiff = (document.all||window.opera)?3:0;intDiff += (window.opera)?4:0;
        objBody = document.getElementsByTagName('body')[0];
        objBody.style.margin = 0;objBody.style.overflow = 'hidden';
        objBody.innerHTML = '<div>' + objBody.innerHTML + '</div>';
        parent.document.getElementsByName(self.name)[0].style.height
                          = objBody.firstChild.offsetHeight + intDiff;
        }
    catch(e)
        {
        return true;
        }
    }
}
window.onload=resize_me;
//-->
</script>
```
das gehört in alle Seiten, welche im iFrame erscheinen sollen.
Das Skript aus der Elternseite könnt ihr entfernen...das wird nicht mehr gebraucht.

In der Elternseite muss nur eine Sache sein...das iFrame *muss* einen Namen haben...wie es heisst, ist egal...der Name darf aber nur einmal in der Elternseite vorkommen.
Falls ihr das mit mehreren iFrames gleichzeitig machen wollt, gehts auch...die müssen dann unterschiedliche Namen haben...das Skript bleibt immer das selbe.

Optimalerweise könntet ihr das Skript noch in eine externe JS-Datei auslagern.

Zu beachten ist: der gesamte Inhalt der Seite im iFrame wird vom Skript in ein <div> verpackt.
Falls ihr also noch andere Skripte in den iFrames habt, für welche das eine Rolle spielt, ist dies zu berücksichtigen.

@meineguete
zu der Sache mit der Blende hab ich keine Idee


----------



## anna sophiea (23. September 2004)

Hallo fatalus,    , tut mir leid dass ich Dir soviele Umstaende mache......ich hab versucht dein neues Script einzubinden, aber ich bekomme es nicht hin, der iframe faehrt nicht zurueck.....

ich hab jetzt mal den qelltext einer Tabellenseite von mir hier reingestellt, keonntest Du mir vielleicht cod ergaenzen...weil du geschrieben hast, Zitat: "Zu beachten ist: der gesamte Inhalt der Seite im iFrame wird vom Skript in ein <div> verpackt.
Falls ihr also noch andere Skripte in den iFrames habt, für welche das eine Rolle spielt, ist dies zu berücksichtigen."

vielleicht habe ich ja hier etwas falsch gemacht.....

und wo scheint denn jetzt in der zu ladenden Seite der Name des Iframes als Zielort auf...oder braucht es den nicht...oder bleibt der <body>_Tag ,<body onload="parent.resize_me('I1')"> , erhalten.....? (Ich frage viel, tut mir leid...)...







```
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>meisterschaft</title>
<style>
<!--
body {
	background-color: #000000;
	margin-left: 0px;
	margin-top: 0px;
}
-->
</style>

</head>

<body topmargin="1" leftmargin="1" rightmargin="1" bottommargin="1" marginwidth="0" marginheight="0">

<div align="center">

	<table width="749" cellspacing="0" cellpadding="0" bgcolor="#000000" style="padding:0; border-collapse:collapse" bordercolor="#FFFFFF" id="table1" height="900" border="1">
		<tr>
			<td bgcolor="#000000" width="100%" height="100%" style="padding: 0px" bordercolorlight="#FFFFFF" valign="top">
			<p align="center">&nbsp;</p>
			<table border="1" cellpadding="0" cellspacing="1" style="padding:0; border-collapse: collapse; border-left-width:1px; border-right-width:1px; border-top-style:solid; border-top-width:1px; border-bottom-style:solid; border-bottom-width:1px" bordercolor="#FFFFFF" width="100%" id="table5" height="74" bgcolor="#000000">
				<tr>
					<td width="21%" height="15" align="center">&nbsp;</td>
					<td width="57%" height="15" align="center" bgcolor="#000000" bordercolor="#FFFFFF">
					<span style="vertical-align: super"><b>
					<font face="Verdana" color="#FFFFFF" size="5">
					<span style="background-color: #000000">1.</span></font><font face="Verdana" size="5" color="#FF0000"><span style="background-color: #000000">Tabelle</span></font></b></span></td>
					<td width="21%" height="15" align="center" bgcolor="#000000" bordercolor="#FFFFFF">&nbsp;</td>
				</tr>
				</table>
			<p align="center">&nbsp;</p>
			</td>
		</tr>
	</table>
</div>

</body>

</html>
```


----------



## Sven Mintel (24. September 2004)

So sollte es am Ende aussehen:

```
<html> 

<head> 
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> 
<title>meisterschaft</title> 
<style> 
<!-- 
body { 
    background-color: #000000; 
    margin-left: 0px; 
    margin-top: 0px; 
} 
--> 
</style>

<script type="text/javascript">
<!--
function resize_me()
{
if(document.getElementById)
    {
    try
        {
        intDiff = (document.all||window.opera)?3:0;intDiff += (window.opera)?4:0;
        objBody = document.getElementsByTagName('body')[0];
        objBody.style.margin = 0;objBody.style.overflow = 'hidden';
        objBody.innerHTML = '<div>' + objBody.innerHTML + '</div>';
        parent.document.getElementsByName(self.name)[0].style.height
                          = objBody.firstChild.offsetHeight + intDiff;
        }
    catch(e)
        {
        return true;
        }
    }
}
window.onload=resize_me;
//-->
</script>


</head> 

<body topmargin="1" leftmargin="1" rightmargin="1" bottommargin="1" marginwidth="0" marginheight="0"> 

<div align="center"> 

    <table width="749" cellspacing="0" cellpadding="0" bgcolor="#000000" style="padding:0; border-collapse:collapse" bordercolor="#FFFFFF" id="table1" height="900" border="1"> 
        <tr> 
            <td bgcolor="#000000" width="100%" height="100%" style="padding: 0px" bordercolorlight="#FFFFFF" valign="top"> 
            <p align="center">&nbsp;</p> 
            <table border="1" cellpadding="0" cellspacing="1" style="padding:0; border-collapse: collapse; border-left-width:1px; border-right-width:1px; border-top-style:solid; border-top-width:1px; border-bottom-style:solid; border-bottom-width:1px" bordercolor="#FFFFFF" width="100%" id="table5" height="74" bgcolor="#000000"> 
                <tr> 
                    <td width="21%" height="15" align="center">&nbsp;</td> 
                    <td width="57%" height="15" align="center" bgcolor="#000000" bordercolor="#FFFFFF"> 
                    <span style="vertical-align: super"><b> 
                    <font face="Verdana" color="#FFFFFF" size="5"> 
                    <span style="background-color: #000000">1.</span></font><font face="Verdana" size="5" color="#FF0000"><span style="background-color: #000000">Tabelle</span></font></b></span></td> 
                    <td width="21%" height="15" align="center" bgcolor="#000000" bordercolor="#FFFFFF">&nbsp;</td> 
                </tr> 
                </table> 
            <p align="center">&nbsp;</p> 
            </td> 
        </tr> 
    </table> 
</div> 

</body> 

</html>
```
 Den Namen des <iframes> musst du in dieser Seite nicht mehr angeben....auch das 'body onload' entfällt.

In der Elternseite musst du im <iframe>-Tag lediglich irgendeinen einzigartigen Namen angeben(hast du  ja offensichtlich.....'I1')


----------



## anna sophiea (26. September 2004)

Vielen vielen Dank ...fatalus....nochmals, jetzt habe ich alles was ich brauche, es sieht toll aus.

Danke und liebe Gruesse, anna sophiea.         ,


----------



## ScotoX (30. März 2007)

Hallo,
ich hätte eine Frage zu diesem Thema. Ist es auch möglich dieses umgekehrt zu
nutzen? Also das sich die Seite dem iframe anpasst? Meine Seite sieht wie folgt aus:
Image, nun will ich erreichen das die Seite wenn ich im Frame einen Link anklicke und
der iframe größer wird sich die Seite auch mit anpasst, so das der Scrolleffekt nicht 
entstehen kann.

mfg. ScotoX


----------



## Sven Mintel (31. März 2007)

Hallo, ich muss gestehen, dass ich dazu zwar viel geschrieben habe, dies persönlich aber nie einsetzen würde, da es mir zu murksig ist :-(

Dieses Thema ist schon etwas älter, und heutzutage, wo sich alle mit AJAX herumschlagen, eh überholt.

Ich selbst würde auch mit AJAX davon absehen, den mehr oder weniger kompletten Inhalt zu Laden, aber wenn ich es müsste, würde so vorgehen:


die komplette Seite erstmal ohne frames/iframes konzipieren
die veränderlichen Inhalte in Container verpacken
die Links, welche ein Ändern der betreffenden Inhalte bewirken, per JS so manipulieren, dass  sie, anstatt eine komplett neue Seite zu Laden, nur noch per AJAX die veränderlichen Inhalte holen und in den betreffenden Container platzieren

Sämtliche Probleme mit Scrollbars erledigen sich dann von selbst, sofern der Inhalt ins Fenster passt und die Container nicht per CSS scrollbar gemacht wurden


----------



## ScotoX (31. März 2007)

Hm,
tut mir leid wenn ich das jetzt so sagen muss. Aber ich habe bis jetzt nur Bahnhof
verstanden. Bin leider nicht so in der Script Scene Aktiv und kenn mich deswegen
nicht so aus mit dem ganze Zeug. Könntest du mir vielleicht persönlich weiterhelfen?

mfg. ScotoX


----------



## science2k3 (17. Mai 2007)

Hallo und vielen 1000 dank für das Script! Habe schon ewig danach gesucht. Habe auch gleich verwendung dafür gefunden. Nur ein kleines Problem habe ich noch  Im IE funktioniert das Script super nur im Firefox will es nicht gehen... Wär mega geil wenn da noch was zu machen wäre. 

Vielen dank


----------

