dynamische iFrames und NS6
Christian Ludwig
- javascript
Hi,
folgendes Problem:
ich habe eine Seite mit einem iFrame, der nested auf einem DIV-Layer (id="cdiv") liegt. Der Inhalt dieses iFrames wird dynamisch per
document.getElementById('iframe1').src=dieURL;
geladen.
Das Problem ist, dass sich die größe des iFrames nicht dynamisch an die Länge des geladenen Dokuments anpasst und somit abgeschnitten wird.
Folgende Lösungsansätze mit folgender Funktion, die beim NS4 und IE einwandfrei funktioniert. Jedoch bekomme ich die Höhe des neu geladenen Dokuments beim NS6 (is_DOM) einfach nicht heraus. Auch der IE5 auf dem MAC hat damit scheinbar Probleme, deshalb die fixe Höhe von 2500px.
function iFrameHoehe(){
if (is_NS4) {
layerHeight = document.layers['cdiv'].document.layers['ilayer1'].clip.height + 182;
// DocumentHeight ist die Höhe des Hauptdokuments.
if (layerHeight < DocumentHeight) {
layerHeight = DocumentHeight;
}
document.layers['cdiv'].window.document.height = layerHeight;
document.layers['cdiv'].clip.height = layerHeight;
}
if (is_IE){
if (is_mac)
document.all('iframe1').style.height = 2500;
else
document.all('iframe1').style.height = document.iframe1.document.body.scrollHeight;
}
else if (is_DOM) {
// alert(document.getElementById('iframe1').offsetHeight);
// document.getElementById('iframe1').style.height = document.getElementById('iframe1').body.scrollHeight;
// document.getElementById('iframe1').style.height = document.getElementById('iframe1').height;
document.getElementById('iframe1').style.height = 2500;
}
}
Hat da jemand eine Lösung parat?
Danke
Christian
versuchs mal mit resizeTo(x,y)
Da habe ich mich wohl falsch ausgedrückt.
Die Größe des iFrames kann ich sehrwohl beliebig ändern. Ich bekomme aber nicht heraus, wie hoch das geladene Dokument nun wirklich ist.
Suche also eine vergleichbare Funktion für NS6 wie:
document.layers['ilayer1'].clip.height
beim NS4 oder
document.iframe1.document.body.scrollHeight
beim IE.
Christian
hi,
teste doch mal sowas:
document.getElementById('xyz').firstChild.offsetHeight;
eventuell noch tiefer gehen in der child-hierarchie
hth
Gruesse Joachim
Hi,
document.getElementById('xyz').firstChild.offsetHeight;
Hab ich probiert, leider nicht erfolgreich.
eventuell noch tiefer gehen in der child-hierarchie
Was meinst du mit noch tiefer?
document.getElementById('iframe1').childNodes.length
lieferte mir als Wert eine 0 zurück. Mir scheint, als gebe es keine Child-Objekte.
Ciao
Noch was,
die Funktion
function iFrameHoehe(){
rufe ich per onLoad="iFrameHoehe()" von jedem Dokument aus auf, das in den iFrame geladen wird.