Hallo und Danke für die Antwort,
Das ist ja hart, warum machst du das so?
Mal abgesehen, dass es für keinen, nicht mal dich einen nutzen hat.
Der Hintergrund ist, daß ich aus einem XML, welches die Daten für eine beliebig tiefe hierarchische Menüstruktur enthält, via XSLT eine gigantisches hierarchisch verschachteltes JS-Array mache. Daraus erzeugt mein JS-Code ein klassisches PopDown-Menü. Ursprünglich habe ich mit Divs für die aufpoppenden Menu-Fenster gearbeitet, das Problem war, daß DropDown-Boxen und z.B. Flash-Plugins sich nicht um den Z-Index kümmern und *immer* obenauf erscheinen. Abhilfe bieten da nur absolut positionierte IFrames.
Und wenn du es so machen mußt (was ich mir nicht vorstellen kann), dann verwende Frames in die du den Inhalt reinschreibst, aber nicht das gleiche Dokument in dem auch dein JS ist, da du damit das Skript überschreibst.
Ich muß IFrames benutzen, damit ich die Dinger absolut positionieren kann (ich kann da schlecht mit nem Frameset arbeiten ;).
Warum nicht einfach:
<html>
<body>
<iframe id="myiframe"></iframe>
</body></html>
<html> und <body> habe ich nur aus Beispielgründen hier aufgenommen. Tatsache ist allerdings, daß ich die IFrames dynamisch generieren muß.
selten eine überflüssige verwendung von eval gesehen.
eval ist evil und wie immer auch hier absolut nicht nötig:
var myIFrame = parent.myiframe;
Hmmm, ok danke, das ist eh nur nuch ein Artefakt von irgendwelchen verzweifelten Versuchen.
im zweifelsfall lieber:
myIFrame.innerHTML = ...
Hmm, ich bin zwar ein HTML-Noob, aber ich glaube (und ich glaube, daß ich das auch ausprobiert habe), daß sich innerHTML auf den Text zwischen öffnendem und schließendem IFrame-Tag bezieht. Das resultiert aber dann nur in einem Alternativ-Text, der angezeigt wird, wenn der Browser keine IFrames kann. Der Inhalt des IFrames MUß per src-Attribut oder per frame.doc.write angegeben werden.
Ohne zu Wissen, das das Dokument schon fertig gerendert ist wirst du hier imer schwierigkeiten bekommen.
Da das onload event bei dynamischen Dokumenten nicht feuert, musst du eine Schleife mit setTimeout machen, die immer wieder überprüft ob das was du suchst wirklich vorhanden ist.
*arg* das klingt nach problemorientierter Programmierung... ;)
BTW, document.writeln ist verpöhnt nimm document.write()
(wobei das eher historische Gründe hatte, da einige Mac Browser, damit Abstürze verursachten)
*g* verstehe. Nehm's mir zu Herzen ;)
Thilo