moin !
Der Funktion oefFenst übergebe ich best. Parameter, die mir den Inhalt der Frames des neuen Fensters dynamisch je nach angeklicktem Bild ändern.
D.h. im neuen aber immer gleichen Fenster, wird unterschiedlicher Inhalt angezeigt.
oefFenst ruft in sich
1.eine "variable=open(...)" Funktion auf, so dass das neue Fenster geöffnet wird(variable referrenziert mein neues Fenster)
2.folgende Befehle auf:
var help = variable.frames[1];
help.document.all.tags("font")[13].innerHTML = .....
(Damit soll der Inhalt des rechten Frames(eine html-Seite mit vielen font-Elementen) neu gesetzt werden)
So weit so gut. Geh ich damit nun online und klicke auf ein Bild öffnet sich zwar das neue Fenster, aber mein Inhalt wird nicht neu gesetzt. Zusätzlich erscheint die Meldung, dass help.document.all.tags..... kein Objekt sei.
Hmmm das Problem liegt wohl im Programmfluss!
Bei derartigen Scripts, bei denen dokumentübergreifend gearbeitet wird muss man dringend darauf achten, was Zeile für Zeile im Script passiert und auf welche Elemente zugegriffen wird.
Einfacher ! Es kann passieren das auf ein Element zugegriffen wird, welches noch gar nicht existiert!
Irgendwie sind also online best. Daten nicht verfügbar oder
In deinem Fall muss noch ein anderer Parameter beachtet werden. Die Zeit die vergeht bis das Dokument auf deinem lokalem Rechner zur Verfügung steht.(also verfügbar ist)
Im Offline Modus kann es allerdings auch zu Problemen kommen. Den entscheident ist wer schneller ist. Der JavaScript Interpreter oder der Dateizugriff.
"help.document.all.tags ... ist kein Objekt",könnte also bedeuten das dieses Objekt zum Zeitpunkt des Aufrufes noch gar nicht vorhanden ist.
Das könnte durch ein setTimeout() gelöst werden,indem die entsprechende Funktion erst verzögert ausgelöst wird.Das ist aber die unelegantere Methode, den der Zugriff auf das neue Dokument kann bei jedem User eine andere Zeitspanne einehmen.
Es geht ja auch nur darum, das diese Funktion erst aufgerufen werden soll wenn das entsprechende Objekt, welches bearbeitet werden soll, auch zur Verfügung steht.
Das geht am besten mit einem onload() Event. Je nach dem bei welchem Element das onload() Event notiert wird, wird das Event erst ausgelöst wenn es auch zur Verfügung steht.... das ist am sichersten.
(man kann das onload() Event auch für einen Frame definieren, dann wird es erst ausgelöst wenn der komplette Frame geladen wurde incl. aller Elemente)
Lösung !
Objekt ---> onload(halloichbindaundkannjetztbearbeitetwerden());
cu