Steff Maier: iFrame dynamisch erzeugen - wie precachen?

Beitrag lesen

Hallo liebes Forum.

Letztens habe ich ein kleines Lightbox-Skript geschrieben, mit dem ich auf Link-Klick ein halbtransparentes DIV-Layer erzeuge sowie ein darin zentriertes Bild. Damit ich auf die Höhe und Breite des Bildes zugreifen konnte musste ich es erst vorladen lassen; erst danach konnte ich mit dem Skript fortfahren:

  
 function loadImage() {  
  var img = new Image();  
  img.src = foo;  
  if (img.complete) {  
   openLightBox();  
  } else {  
   img.onload = openLightBox;  
  }  
 }  

Nun möchte ich etwas ähnliches machen; nur möchte ich keine Bilder anzeigen lassen sondern andere HTML-Seiten. Ich habe mir gedacht ich löse das über ein iFrame.

  
 var div0 = document.createElement("div");  
 var iframe = document.createElement("iframe");  
 iframe.src = foo;  
 div0.appendChild(iframe);  
 document.body.appendChild(div0);  

Soweit funktioniert das auch schon; die unter "foo" verlinkte Seite wird wie gewünscht in einem Layer über der Seite geöffnet.
Nun sollte ich aber die Eigenschaften dieser verlinkten Seite auch noch abrufen können, und da habe ich das Problem, daß während der Ausführung des Skripts die Seite ja noch nicht im Cache ist.

Das merke ich daran, dass wenn ich an das Skriptende "alert(top.frames[0].location);" anfüge bekomme ich "about: blank" als Meldung; nur wenn ich vorher einen weiteren Alert habe, erhalte ich den korrekten Dateipfad.

Nur, wie frage ich ein Onload-Event einer zu erzeugenden Frameseite ab? Insbesondere wenn ich nicht die einzubindenden Seiten dafür anpassen möchte? Analog zum Image kann es ja nicht gehen, und "iframe.onload" geht natürlich auch nicht (das ist ja das IFRAME-Tag).

Im Netz findet man leider nur Anleitungen wenn ein festes Frameset besteht, aber leider nicht wenn man eines dynamisch erzeugen will.
Könnt ihr mir bitte weiterhelfen?

Viele Grüße, Steffen