Hallo Reschi,
das hat geholfen.
Das Konstrukt, was AVM da baut, ist (a) ziemlich wild und (b) verwendet steinalte Techniken. Sie binden einen iframe auf der Seite ein (damit lädt man ein HTML Dokument in einen isolierten Unterbereich der Seite) und dieser iframe ruft setStatus auf.
Welches HTML Dokument darin geladen wird, ist nicht direkt erkennbar, dazu muss man den Aufruf der setIdocSrc-Funktion finden und schauen, welche URL ihr übergeben wird. Es sieht so aus, als passiere das nicht nur einmal, sondern für jede Aktion mit dem Mikrocontroller erneut. Brrrrr.
Jedenfalls führt das Beispiel-HTML mit dem iframe einen lebhaften Dialog.
Beispiel: exethled.htm enthält in onLoadDo:
function setOK()
{
setIdocText(lang["plsWait"]);
checkTimeout(1);
setTimeout('setIdocSrc("exethled/eth_leds.htm")',50);}
Der iframe hat initial keinen Inhalt, das macht aber nichts. setIdocText baut ein minimales HTML-Fragment zusammen, besteht aus dem Template in idocTpl und dem String in lang['plsWait'], und schreibt das mit document.write in den iframe. Brr. Dafür gibt's seit 2012 das srcdoc-Attribut.
Die checkTimeout-Funktion ist eklig, sie verhält sich unterschiedlich, ob sie mit einem falsy- oder truthy-Wert aufgerufen wird (falsy und truthy kennst Du aus C - 0 oder NULL ist wie false, alles andere ist wie true). Ohne explizte Parameterübergabe ist der Parameterwert undefined, das ist falsy, und in dem Fall wird ein existierender Timeout gelöscht. Übergibt man 1, wird ein Timer mit 10s Laufzeit gestartet.
Danach wird mit setTimeout ein 50ms Timer gestartet und wenn der abgelaufen ist, wird 'setIdocSrc("exethled/eth_leds.htm")' ausgeführt. Ebenfalls Code von 1999 - heute würde man die Funktion übergeben und die Parameter von setTimeout durchreichen lassen:
setTimeout(setIdocSrc, 50, "exethled/eth_leds.htm");
Die setIdocSrc-Funktion setzt das src-Attribut des iframe, lädt also ein neues Dokument: "exethled/eth_leds.htm".
Und wenn Du da hinein schaust, findest Du
parent.setStatus(test)
wobei test dieser komische PPin-String ist, der vermutlich nur vom Controller verstanden wird.
Da iframe und Beispielseite vom gleichen Origin kommen, ist der Zugriff mit parent auf das Elterndokument erlaubt und es wird setStatus aufgerufen.
Mann mann mann, und für so einen obsoleten Dreck bezahlt man Geld 😕 Aber um es modern neu zu schreiben, muss man erstmal ordentlich Zeit investieren, um alles zu verstehen.
Rolf
sumpsi - posui - obstruxi