Oliver Hunger: wiedermal: warten auf geladenen (php) iframe (mit gutem grund!)

Beitrag lesen

schönen tag!

in den beiden variationen meines skripts wird zwar wohl die php routine loadmenu.php aufgerufen, aber nicht jedesmal. ich nehme an, weil javascript schneller läuft als php das skript ausgeführen kann.

deshalb der versuch, auf den fertig geladenen inhalt des iframes zu warten (onload="loaded=true"). das artet jedoch stets in einer endlosschleife aus, weil loaded nicht auf true gesetzt wird. auch der versuch, durch das php-skript in den iframe ein javaskript zu schreiben, das irgendwelche tag-variablen setzt, hat nicht funktioniert.

any clues???

(wann führt denn javascript das onload skript aus? es scheint, als blockiere die while-schleife die ausführung eines anderen skripts ...

ps: es geht mir nicht darum, in den iframes irgendetwas anzuzeigen, sondern darum, das .php skript aufzurufen, weil dort serverseitig etwas erledigt werden soll, was in zusammenhang mit der seite steht. der iframe soll eigentlich invisible sein ... auch die versuche innerHTML oder innerText des iframes auf eine Änderung (die das php skript erledigen kann) zu überprüfen, haben nicht funktioniert.

---

variante 1:

<IFRAME id="frm" src="init.php" onload="loaded=true;"></IFRAME>
...
for (var i=0; ...)
   {
   loaded=false;
   getRef('frm').src='loadmenu.php?nr='+i;
   while (! loaded)
      {
      }
   }

variante 2:

<DIV id="ifrm"><IFRAME id="frm" src="init.php" onload="top.loaded=true;"></IFRAME></DIV>
...
for (var i=0; ...)
   {
   top.loaded=false;
   getRef('ifrm').innerHTML='<iframe id="frm" src="loadmenu.php?nr='+i+'" onload="top.loaded=true;"></iframe>';
   while (! top.loaded)
      {
      }
   }

getRef(id) stellt browserabhängig die referenzierung eines elementes via id her (document.all, getelememtbyid, ...).

die skripte sind leicht abgeändert und aus dem zusammenhang gerissen, also bitte kein infragestellen der sinnhaftigkeit ...

---

danke für zahlreiche lösungen,

oliver!

[wer vieles hinterfragt bekommt oft neue antworten]