Hallo Matthias
Ganz allgemein: wenn ich in einem Frame mit xy=window.open(...) ein Fenster öffne, kann ich dann auf Methoden und Eigenschaften des Objekts xy von allen anderen Teilen der Seite (alle anderen documents, egal ob in Frames oder weiteren Fenstern) zugreifen? Wenn ja, wie? Das ist der Punkt, an dem ich scheitere, weil ich außer Fehlermeldungen, wie sie in der letzten Mail standen, nichts zurückbekomme. Der Frame, der das Fenster geöffnet hat, hat nach Öffnen des Fensters einen neuen Inhalt bekommen; ist das irgendwie "schlimm" ? (Was wäre, wenn der Frame in der Zwischenzeit gar nicht mehr existiert und ein anderer Frame den Fensterinhalt neu laden oder das Fenster schließen will?)
genau da liegt das Problem. Wird der das Fenster öffnende Frame neu geladen wird die Referenz auf das Fensterobjekt zerstört.
Dies liegt darin, dass JavaScript immer an eine Webseite gebunden ist. Wird diese Webseite ausgetauscht, sind damit auch alle Informationen verloren.
Lediglich URL und der Fenstername stehen weiterhin zur Verfügung und bleiben gleich. JavaScriptobjekte werden jedoch komplett gelöscht.
In meinem Source sah das so aus (ich hab's eben nochmal ausprobiert, wieder ohne Erfolg): In dem Frame mit Namen "info" steht der JavaScript-Code, der alles anstößt -
fenster=window.open("quickinfo.php?dbindex="+idnr, "details", "...");
Verlagere doch die Funktion in deinen Topframe. Damit bleibt - solange dieser nicht neu geladen wird - die Referenz auf das Fenster bestehen.
In quickinfo.php gibt's nun einen Link, mit dem man den Inhalt des Frames, aus dem "details" heraus aufgerufen wurde, neu laden kann. Das geht ebenfalls. Das Problem entsteht erst, wenn dieser neue Frame-Inhalt versucht, das Fenster "details" zu schließen. (Gilt "fenster" nicht mehr als Referenz, sobald der Frame-Inhalt überschrieben wurde?)
Das Detailfenster kann sich doch in diesem Fall selber schließen.
Ich gehe davon aus, dass du mit opener.location.href arbeitest. Dann brauchst du nach diesem Aufruf nur noch self.close(); schreiben.
Was mache ich falsch? Wäre super, wenn Du das aufklären könntest, denn ich steh' irgendwie vor einem Rätsel :-}
Ich hoffe ein klein wenig Licht in das Dunkel gebracht zu haben.
Viele Grüße
Antje