Problem mit window.open und nachträglichem laden von Dateien in vorhandene Frame
Steffen
- javascript
Folgende Funktion funktioniert auf einem lokalen Rechner mit dem Internetexplorer 5.0 ausgezeichnet. Lade ich das ganze auf den Server, bricht die Funktion beim setzen der Frameinhalte ab. Im Netscape Navigator V4.7 funktioniert die Funktion auch auf einem lokalen Rechner nicht. Das neue Fenster wird zwar erzeugt, es hat aber keine Staus, Menu und Toolbar. Die Abarbeitung wird ebenfalls nach der Erzeugung abgebrochen.
function SetFrames(Kategorie)
{
if ( (parent.window.name != "Data00"))
{
alert("Diese Datei kann nur im Hauptfenster angezeigt werden");
Hauptfenster=
window.open("index.htm","Hauptfenster","status, menubar, toolbar, location");
Hauptfenster.moveTo(0,0);
/* bis hierher funktionierts auch auf dem Server */
Hauptfenster.frames[2].location.href=Kategorie;
/* Kategorie = Name der zu ladenden HTML Datei für Frame[2]*/
Hauptfenster.frames[2].frames[1].location.href=self.location.href;
/* Die Datei, in der diese Funktion aufgerufen wird, soll in Frame[1]
von Kategorie angezeigt werden */
top.location.href='useindex.htm';
/* enthält Hinweis, das nächste Mal bitte die Startseite zu benutzen */
Hauptfenster.focus();
}
}
Leider bin ich momentan mit meinem Latein am Ende.
Es währe nicht schlecht, wenn mir jemand helfen könnte.
Schönen guten tag auch,
du hast da mehrere Probleme in deinem skript.
Hauptfenster=
window.open("index.htm","Hauptfenster","status, menubar, toolbar, location");
Meines wissens müßte es heissen status=yes,menubar=yes...
und Netscape reagiert allergisch auf leerzeichen.
wenn du hier bist, muss das frame aufgebaut sein, ist es aber wenn du online bist nicht unbedingt.
Hauptfenster.frames[2].location.href=Kategorie;
/* Kategorie = Name der zu ladenden HTML Datei für Frame[2]*/
sind hier wirklich zwei framesets ?
Hauptfenster.frames[2].frames[1].location.href=self.location.href;
besser ist es im Hauptfenster ein skript aufzurufen und das frameset dynamisch aufzubauen mit document.write("<frameset...blabla..
gruss STRUPPI
Hi Steffen
Das Problem ist, dass du auf Dinge zugreifst, die noch nicht da sind.
Beispiel: Hauptfenster.frames[2].location.href=Kategorie;
Das Hauptfenster ist, wenn es auf dem Server liegt, noch gar nicht vorhanden (Vielmehr der Frame2 ist noch nicht da, da die index.html noch "gesucht" wird)
lokal geht das oeffnen natuerlich viel schneller und deshalb klappt dein Script auch auf deinem Rechner. Ich wuerde einfach an den kritischen Stellen ein settimeout einfuegen, oder noch sicherer, eine Abfrage, ob frame2 existiert und dann in frame2 die gewuenschte Datei laden.
Mit Netscape funktioniert das nicht, weil du leerzeichen zwischen den Argumenten beim oeffnen gelassen hast.
Richtig also: window.open("index.htm","Hauptfenster","status,menubar,toolbar,location");
Ich wuerde mir an deiner Stelle mal http://www.teamone.de/selfaktuell/artikel/jsframes.htm anschauen, da steht eine Loesung fuer dein Problem.
Ich sehe gerade, dass Struppi schon die Probleme angesprochen hat. Also: einfach nur den obigen link anklicken ;-)
Tschau Holger