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

anna sophiea

Mitglied
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.
 
Zuletzt bearbeitet:
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:
Code:
<script type="text/javascript">
<!--
function resize_me(n)
{
    d=5;ifObj=document.getElementsByName(n)[0];p=(document.all)?'scroll':'offset';
    eval("ifObj.style.width=window.frames[n].document.getElementsByTagName('body')[0]."+p+"Width+"+d);
    eval("ifObj.style.height=window.frames[n].document.getElementsByTagName('body')[0]."+p+"Height+"+d);
}
//-->
</script>
Der Aufruf erfolgt vom <iframe> aus per
Code:
<body onload="parent.resize_me('content')">
...wobei der übergebene Parameter der Name des <iframe>'s ist.
Leider aber weiss ich nicht, wo genau ich diese Scripte bei mir reinschreiben mus...:rolleyes: ...

Der Cod von meinem IFrame sieht wie folgt aus:
PHP:
<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....?
 
In der main_frame1.htm musst du den <body>-Tag ersetzen durch:
Code:
<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.
 
Ich hab den fehler gefunden, musste den cod auch noch in alle zu ladenden Seiten schreiben......:p ......!

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....:rolleyes:.
 
Zuletzt bearbeitet:
Mr fatalus.....

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

Danke rechtherzlich,

anna sophiea.
 
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
Code:
<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
Code:
<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?
 
Zuletzt bearbeitet von einem Moderator:
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...:rolleyes: ....
 
Neuer Tag, neues Skript.....

Code:
<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:(
 

Neue Beiträge

Zurück