Roland Genske: Fragen zu window.open()

Hallo Forum-Experten,

ich bin jetzt nach tage- (und nächte :-) langem Experimentieren an dem Punkt, an dem ich selbst nicht mehr weiter weiss.

Wenn mir hier jemand helfen könnte, wäre ihr/ihm mein Dank gewiss!

  1. Kann ich in einem Zweitfenster, dass ich mit window.open() erzeugt habe, aus dem Hauptfenster heraus eine JavaScript-Funktion aufrufen?

  2. Wenn ich aus dem Hauptfenster mit window.open() ein Zweitfenster geöffnet habe und anschließend eine neue Seite in das Hauptfenster lade, ist die Verbindung zum Zweitfenster nicht mehr vorhanden (d.h. die Instanzvariable des Zweitfensters ist "weg").

Um jetzt aus dem neuen Dokument heraus Verbindung zum Zweitfenster aufzunehmen, rufe ich nocheinmal window.open() auf (mit demselben Fensternamen wie vorher). Das klappt auch, ich bekomme mit dem IE6 allerdings einen "Zugriff verweigert" Fehler, wenn ich versuche, z.B. auf zweitfenster.document zuzugreifen. Woran liegt das?

Ich muss dazu sagen, dass ich in diesem Fall window.open() mit der "about:blank" URL aufrufe, um zunächst ein leeres Zweitfenster zu bekommen. Anschließend baue ich aus dem Haputfenster heraus per JavaScript das Dokument im Zweitfenster dynamisch auf [per zweitfenster.writeln()].

Wenn ich das testhalber anders mache, nämlich das Dokument "normal" in einer HTML-Seite speichere und diese als URL an window.open() übergebe, kann ich anschließend problemlos auf zweitfenster.document zugreifen, ohne einen "Zugriff verweigert" Fehler zu bekommen.

Leider bin ich darauf angewiesen, das Dokument per JavaScript dynamisch aufzubauen.

  1. Ist window.open() die einzige Möglichkeit, mit einem existierenden Zweitfenster aus einem neuen Dokument heraus Verbindung aufzunehmen? Da window.open() ja immer eine URL lädt (selbst wenn es sich um "about:blank" handelt), ist anschließend der vorherige Inhalt des Zweitfensters "weg". Kann ich das irgendwie umgehen, d.h. mich aus einem neuen Dokument heraus in ein bestehendes Zweitfenster "einklinken"?

Ich hoffe, ihr versteht, worauf ich hinaus will.

Vielen Dank!!

  1. Hallo Roland,

    1. Kann ich in einem Zweitfenster, dass ich mit window.open() erzeugt habe, aus dem Hauptfenster heraus eine JavaScript-Funktion aufrufen?

    Ja. Angenommen, das Fenster wurde mit popup=window.open() geöffnet, und enthält eine Funktion func(), könntest du die aus dem Hauptfenster heraus mit popup.func() aufrufen.

    1. Wenn ich aus dem Hauptfenster mit window.open() ein Zweitfenster geöffnet habe und anschließend eine neue Seite in das Hauptfenster lade, ist die Verbindung zum Zweitfenster nicht mehr vorhanden (d.h. die Instanzvariable des Zweitfensters ist "weg").

    Stimmt, und du hast auch keine Möglichkeit, eine neue Verbindung aufzubauen.

    Kann ich das irgendwie umgehen, d.h. mich aus einem neuen Dokument heraus in ein bestehendes Zweitfenster "einklinken"?

    Du kannst nur dafür sorgen, dass die bestehende Instanz nicht verlorengeht. Beispielsweise indem du im Hauptfenster ein Frameset einsetzt, mit einem dauerhaften Nullframe, der das Zweitfenster öffnet, und über den andere, wechselnde Frames auf das Zweitfenster zugreifen können.

    Grüße, Stefan

    1. Danke, Stefan!

      Du kannst nur dafür sorgen, dass die bestehende Instanz nicht verlorengeht. Beispielsweise indem du im Hauptfenster ein Frameset einsetzt, mit einem dauerhaften Nullframe, der das Zweitfenster öffnet, und über den andere, wechselnde Frames auf das Zweitfenster zugreifen können.

      hab ich ausprobiert und funktioniert! Ich muss nur noch dafür sorgen, dass ein Reload des Browserfensters, der ja das Frameset neu lädt, das Nullframe nicht aktualisiert. Ob das wohl geht? Mal sehen :-)

      Roland