Höhe von iframe dynamisch an Inhalt anpassen

Hi :bp: !

Ich möchte auf meiner Seite ein Forum mit einem iframe einfügen.
Ich hab das hier soweit gemacht:
beachunion.bplaced.net/?location=forum

Nur möchte ich jetzt, dass die Höhe des iframes der Höhe des Forums angeglichen wird, sodass man dann nicht 2 Scrollbalken hat.

Soweit ich durch googlen herausgefunden habe, müsste man das mit Javascript machen. Nur bin ich selbst in Javascript nicht fit genug um mir das zu machen.

Also wär sehr net wenn mir hier wer helfen kann!

mfg

es gibt da noch eine böse böse tabellenlösung, die zwar nicht schön ist, aber auch valid eingesetzt werden kann… :wink:

Welche der beiden Methoden ist weniger böse?

Also ich hab mir gedacht für die nicht javascriptler lasse ich es so wie es jetzt ist und die anderen bekommen es genau angepasst… :slight_smile:

Wenn die Elternelemente eine explizite Größe haben, kannst du
die Höhe ja in Prozent angeben. Ist sicher eleganter als
irgendwelche Tricks mit js.
Rollbalken gibt es da gegebenenfalls auch, aber wenigstens wird
der Platz sinnvoll ausgenutzt.
Wenn man Einfluß auf die andere Seite hat, könnte man
natürlich auch mit PHP nur ein Fragment einbinden, geht das
nicht, bleiben eben nur iframe, frames oder object.

Ansonsten sehe ich nicht, was Tabellen an dem Problem ändern
könnten, vor allem weil da auch nirgends tabellenartiger Inhalt
zu sehen ist.

ich hab da mal so ein ähnliches problem gehabt und musste das frame mit einer tabelle begrenzen, damit es sich anpasste…oder war es nur wegen dem rahmen, der sich mit anpassen musste? egal, auf jeden fall hat es nur so geklappt…

Dann steht eben der iframe in einer Tabellenzelle (wo er fast nie
was verloren haben dürfte), aber was ändert das daran, daß man
irgendwie die Größe des iframe angeben muß?
Bei einigen Formaten wie Pixelgraphik oder teils auch SVG kann
man das so formulieren, daß der Inhalt die Größe des
Anzeigebereiches bestimmen soll, schon vom Konzept her wird
das aber nicht bei einem (X)HTML-Dokument funktionieren, weil
das seine Größe gar nicht explizit angibt, sondern diese sich erst
implizit aus der aktuellen Darstellung ergibt, teils auch erst nach
einer Aktualisierung unter Berücksichtigung einer Stilvorlage
per CSS.

Bei einer Tabellenzelle bestimmt zwar auch der Inhalt die
Größe, allerdings, wenn der Inhalt ein iframe ist, ist das die
angegebene Größe des iframe selbst und nicht des damit
referenzierten Dokumentes.

Darum hab ich mir gedacht, dass das eben mit js gehen müsste.

Indem man die Höhe des Inhalts des iframes auslest und diese dann dem iframe gibt. Nur weiß ich eben selber nicht wie das geht :ps:

Ungetestet, nur gegooglet.

[code][/code]

Soll so funktionieren - Allerdings gibt es wohl noch Verbesserungsbedarf beim Nachladen einer Seite im selben Frame.

Das funktioniert irgendwie noch nicht so ganz…

Muss man das beim iframe so machen?

und beim script statt “Fenster” den name meines iframes?

[code]function reSize()
{
try{
var oBody = fenster.document.body;
var oFrame = document.all(“iframe_forum”);

oFrame.style.height = oBody.scrollHeight + (oBody.offsetHeight - oBody.clientHeight);
oFrame.style.width = oBody.scrollWidth + (oBody.offsetWidth - oBody.clientWidth);
}
//An error is raised if the IFrame domain != its container’s domain
catch(e)
{
window.status = 'Error: ’ + e.number + '; ’ + e.description;
}
}[/code]

Wenn ich da im historischen Rückblick die Diskussion richtig
verstanden habe, erzeugt der Zugriff per js auf eine andere
domain ein Sicherheitsproblem, weswegen es wohl bei browsern,
die gewisse Sicherheitsaspekte beachten, keinen
Informationsaustauch per Skript zwischen verschiedenen frames
gibt, wenn die nicht auf der gleichen domain sind (oder aber, es
gibt vorsichtshalber gar keinen Informationsaustausch).

Das Sicherheitsproblem kann etwa in Zusammenhang mit
sogenanntem ‘Phishing’ auftreten, mag aber auch noch andere
’Anwendungen’ geben, wenn ein browser das zuläßt und der
Nutzer bei solch einem browser Skriptinterpretation aktiviert
hat.

Wenn ich das jetzt richtig interpretiere, ist der Inhalt deines
iframes auf einer anderen domain als das Dokument mit dem
iframe, das kann also gerade so ein Problemfall sein, wo solch ein
Schutz vor ‘Phishing’ das Ausspionieren von Aktionen auf der
anderen domain unterbindet.

Dass ist dan natürlich ein Problem…
Direkten Zugriff auf das Forum hab ich nicht.
Gibt es eine andere Möglichkeit mit der ich die Höhe des iframes anpassen kann?

Da ich selbst kein js verwende, habe ich das nicht selber
ausprobiert. Daher halte ich das nur für eine plausible Ursache
von Problemen mit frames und js. Ob das wirklich stimmt, wäre
gegebenenfalls zu überprüfen. Wenn es da eine Methode gibt,
mit der man Zugriff auf einen externen Inhalt per js bekommt
(etwa auch Formulardaten), so könnte das wohl einige
browser-Anbieter interessieren ;o)

Was bleibt ist etwas ähnliches, hatte ich auch bereits genannt,
da werden Prozentwerte genommen, um den Anzeigebereich
zumindest so groß wie möglich zu machen. Rollbalken gibt es
ja ohnehin, wenn der Platz nicht ausreicht, selbst wenn man das
Forum in einem eigenen Fenster anzeigen läßt, was man ja
ohnehin tun könnte, denn vom Design/Layout her paßt das ja
sowieso nicht gut zusammen.
Prinzipiell kann man natürlich auch die Größe des Forums grob
schätzen, nochmal die Hälfte drauflegen und das dann als Größe
angeben.
Da das Forum hauptsächlich aus Text besteht und zumindest die
Startseite immer ungefähr gleichen Inhalt hat, kann es sein, daß
man da sogar die Höhe recht gut abschätzen kann und per CSS
in Einheiten wie em oder ex angeben.

Das wäre dann eigentlich genau gleich wie ich es jetzt habe…

Gibt es also keine möglichkeit wie ich dass machen könnte?

Bei den beiden Roten Zahlen, musst du einfach deine gewünschte größe reinschreiben und ein anstatt nur der Zahl musst du noch ein % ranhängen :slight_smile:

Oder per PHP:

<? include ("datei.php"); ?>

Die Möglichkeit mit Prozentangaben wurde oben schon
angesprochen - die Prozente beziehen sich dann auf das
Elternelement des iframes, nicht etwa auf dessen referenzierten
Inhalt.

Man kann jetzt auch in den allermeisten Fällen nicht einfach
iframe durch eine PHP-Anweisung wie include ersetzen, denn mit
einem iframe kann man ein komplettes Dokument in ein
bereits vorhandenes komplettes (X)HTML-Dokumente einbinden,
wie auch mit object.
Wenn man da an der gleichen Stelle jetzt include verwendet statt
des iframe, kann man damit nur noch ein Dokumentfragment
einbinden, was an die Stelle paßt, weil da zuvor ein iframe
gestanden hat, kann das sogar sein, daß das Fragment nur auch
inzeiligen Elementen bestehen darf, je nachdem was das
Elternelemente des iframes war.

include kommt natürlich in diesem Fall wie hoffman gesagt hat nicht in Frage.

Prozent bringen auch nichts, weil sie sich ja nicht auf den Inhalt beziehen :wink:.