Hallo,
ich habe folgendes Problem: ich arbeite an einer HTML-Seite, deren eigentlicher Inhalt komplett per document.writeln() erzeugt wird. Im speziellen gehts um einen iframe, dessen Inhalt ich auch erst noch generiere. Das sieht ungefähr so aus (stilisiert):
document.writeln( '<html><body><iframe id="myiframe"></iframe></body></html>' );
Danach generiere ich den gewünschten Content des iframes als HTML-Code in eine String-Variable. Der iframe enthält eine Tabelle mit irgendwelchen Zeilen, Zellen und Zelleninhalten (nicht statisch):
var iframeContent = '<html><body><table id="mytable"><tr><td>Hallo Welt!</td></tr></table></body><html>';
Dann hole ich mir eine Referenz auf den soeben erzeugten iframe:
var myIFrame = eval( 'parent.myiframe' );
Dann schreibe ich den Content in den iframe (ich verwende also keine weitere HTML-Datei)
myIFrame.document.writeln( iframeContent );
Danach muß ich die Größe des iframes an seinen Inhalt anpassen, d.h., ich hole mir eine referenz auf die Tabelle im iframe-Content:
var myTable = myIFrame.document.getElementById( 'mytable' );
...und versuche dann, die offsetWidth- und offsetHeight-Werte der Tabelle auszulesen und sie den Width- und Height-Styles des iframes zu setzen:
myIFrame.style.width = myTable.offsetWidth;
myIFrame.style.height = myTable.offsetHeight;
So. Das funktioniert im IE tadellos. Unter NN7.1 bekomme ich bei den Zeilen, in denen ich mir die Referenzen auf iframe oder Tabelle hole, bzw. beim Zugriff auf deren Properties, Fehlermeldungen wie z.B. "hat keine Properties" oder schlicht "gibts nich" (sinngemäß natürlich ;). Interessant ist allerdings, daß, wenn ich in jede zweite Zeile ein "alert();" setze und die NN-JS-Engine damit "ausbremse", das ganze zumindest teilweise funktioniert (bis dann an anderer Stelle ähnliche Fehler auftreten). Ich folgere aus diesem Verhalten, daß unter NN7.1 mit document.writeln() erzeugte Elemente erst dann wirklich zu existieren beginnen, wenn das Skript komplett durchgelaufen ist, oder wenn so was wie eine alert()-Box für eine Unterbrechung sorgt.
Ehrlich gesagt bin ich total ratlos, wie ich das lösen könnte, und kann deswegen auch keine sehr konkreten Fragen stellen. Meine momentane Hoffnung besteht darin, den Effekt der alerts auch irgendwie ohne alerts zu erreichen. ???
Ich bedanke mich im Voraus für eure Zeit, Ideen, Vorschläge und Flames :)
Thilo