Hallo,
nachdem ich vergeblich im Archiv bzw. SELFHTML gestöbert habe, muß ich jetzt doch mal hier um Hilfe bitten.
Wieder mal geht es um Frames (sorry..)
Vereinfacht ausgedrückt habe ich einen linken Frame mit Menü und einen Hauptframe für Inhalte. Ich möchte, daß im Menü immer der gerade aktive Punkt auch als solcher gekennzeichnet wird.
Dazu spricht der onload-Handler der Hauptframe-Seiten die Menüpukte im linken Frame über GetElementById an und modifiziert deren CSS-Style.
Funktionert prima, außer im IE (nur Version 6.0 getestet) wenn der linke Frame noch nicht im Cache ist. Jeder weitere Aufruf klappt dann.
Hier der Handler:
<script TYPE="text/javascript">
<!--
/* die IDs der Menüpunkte */
Punkte=new Array('m7a','m7b','m7c','m7d','m7e','m7f','m7g');
function markit()
{
/* while (parent.leftframe.document.getElementById("m7")==null) {} */
/* evtl. vorher markierte Menüeinträge auf normal setzen */
for (var i=0;i<7;i++)
{ obj=parent.leftframe.document.getElementById(Punkte[i]).style;
obj.borderLeft="0px";
}
/* den "richtigen" Eintrag markieren: */
obj=parent.leftframe.document.getElementById("m7").style;
obj.borderBottom="2px solid #c00000";
obj.borderLeft="2px solid #c00000";
}
//-->
</script>
Die while-Schleife war ein Reperaturversuch, ich wollte damit sicherstellen, daß die angesprochenen Objekte auch existieren (d.h. warten, bis der linke Frame auch tatsächlich geladen ist). Dummerweise bleibt (nur im IE) dieses Element immer ==null, es sei denn, wie gesagt, der linke Frame liegt noch im Cache herum.
Die Untauglichkeit dieser while-Schleife kann ich mir noch damit erklären, daß der IE während der Ausführung sonst nichts tut, also auch den linken Frame nicht lädt.
Gibt es irgendeine andere Möglichkeit sicherzustellen, daß ein Code-Teil erst dann ausgeführt wird, wenn der Inhalt eines anderen Frames fertig geladen ist? (außer stur 2 Minuten zu warten natürlich)
Oder ist mein ganzer Ansatz verkehrt?
Bin für jeden Hinweis dankbar!
Grüße
Roland
P.S.: Der linke Frame steht im Frameset-Quelltext vor dem Hauptframe, die aktuelle Version ist zugänglich unter http://www.nir-support.de, der Fehler tritt z.B. auf, wenn man das erste Mal auf "Unser Schulungsangebot" klickt. CSS- und HTML-mäßig sind die Dateien validiert und OK (bis auf die leidigen "border"-Attribute im Frameset).