Ulf Lieden: onLoad eines IFRAMES überwachen?

Hi allerseits,

ich fordere dynamisch neue Inhalte für eine in der Seite versteckten IFRAME an, um diese, wenn sie geladen sind, dynamisch in andere Bereiche der Seite zu schreiben. Dies erfolgt nach dem Schema:

document.iFrameName.location.href = "bServlet?param1=wert1&param2=wert2";
sContent = document.iFrameName.document.body.innerHTML;
document.getElementById("zielBereich").innerHTML = sContent;

Dabei ist es natürlich von zentraler Bedeutung, daß die IFRAME-Inhalte erst dann extrahiert werden, wenn sie komplett geladen sind. Die hübscheste Lösung hierfür wäre, das onLoad-Event des IFRAMEs sozusagen "von aussen" zu überwachen. Weiß jemand, wie sowas geht?

Gruß und vielen Dank,
UlfL

  1. Hallo Ulf

    Dabei ist es natürlich von zentraler Bedeutung, daß die IFRAME-Inhalte erst dann extrahiert werden, wenn sie komplett geladen sind. Die hübscheste Lösung hierfür wäre, das onLoad-Event des IFRAMEs sozusagen "von aussen" zu überwachen. Weiß jemand, wie sowas geht?

    Du koenntest in der Elterndatei z.B. ein verstecktes Formular definieren, das von den iframe-Daten bei onLoad mit einem neuen Wert versorgt wird, und in der Elterndatei mit einer Ereignisueberwachung fuer onChange darauf reagieren. Klingt jetzt fuerchterlich, ich weiss. Also:

    1. in der Elterndatei so was notieren wie:
    <form name="flag"><input type="hidden" name="data" value="false"></form>

    2. in der Elterndatei eine Ereignisueberwachung fuer document.flag.data und den Event onChange programmieren, so aehnlich wie in <../../tecbc.htm#a1>.
    (wobei ich hier das kritische Moment sehe, da ich nicht weiss, ob Ereignisueberwachung auch bei hidden-Feldern funktioniert)

    3. in den Output-Daten des Iframes notieren:
    <body .. onLoad="parent.flag.data.value='true'">

    viele Gruesse
      Stefan Muenz

    1. Hi Stefan,

      und vielen Dank für dein Antwort :)

      Sowas ähnliches ist mir auch durch den Kopf gegangen. Man könnte natürlich auch das ganze direkt aus dem IFRAME starten, indem man im dortigen BODY ein onLoad="parent.schickeDieDatenSonstwo()" notiert.

      Der Trick sollte aber sein, daß die IFRAME-Inhalte nix vom parent wissen müssen. So könnte man beliebige HTML-Komponenten, XML, oder auch reine Daten, an den Client schicken, der diese selbständig verarbeitet. So wird der IFRAME zur Kommunikationsschnittstelle zwischen eine DHTML-GUI und Server.

      In IE5 geht es auch, durch die Methode attachEvent().

      <IFRAME NAME="bufferFrame" STYLE="DISPLAY:NONE"></IFRAME>
      <SCRIPT>
      document.bufferFrame.window.attachEvent("onload",methodeName);
      </SCRIPT>

      Gruß,
      UlfL