Michael Schröpl: cross-window-Funktionsaufruf oder onTop-Event?

Beitrag lesen

Hallo Leute,

ich bin gerade dabei, meine Gedanken zu sortieren. Das, was ich erreichen möchte, kriege ich im Moment noch nicht hin - aber es könnte sehr wohl sein, daß es einen anderen Weg gibt, den ich bisher einfach nicht sehe.

Ich versuche mal, zu abstrahieren:

Ich habe eine Anwendung mit einem komplexen Frameset in ihrem Fenster (nachfolgend als "1. Fenster" bezeichnet), welche bei einem bestimmten Mausklick ein neues Fenster öffnet (JavaScript, window.open(), nachfolgend "2. Fenster" genannt).
Die Funktion, welche dieses 2. Fenster öffnet, muß gleich anschließend noch etwas tun - nämlich einen "Betriebsmodus" ihres Fenster-Inhalts umschalten (das ist mein eigener JavaScript-Kram mit Event-Überwachung - dort läuft etwas dauerhaft im Hintergrund, was kräftig Ressourcen verbraucht und was ich deshalb nur aktiv haben möchte, wenn der Benutzer dieses Fenster auch wirklich sehen kann).

Nun sei also dieses 2. Fenster offen, und es habe auch erst mal den Fokus. Das 2. Fenster (eine Art "Detail-Ansicht") ist relativ groß und nicht in der Größe veränderlich - solange dieses den Fokus hat, ist das 1. Fenster definitiv nicht sichtbar (unter meinen Randbedingungen).
Das ursprüngliche Fenster steht also im Modus "passiv" irgendwo in Hintergrund.

Irgendwann wird das 2. Fenster nun aber seinen Fokus abgeben (wahrscheinlich geschlossen oder minimiert sein) und das 1. Fenster wieder sichtbar sein. Ich gehe davon aus, daß der Besucher keine weiteren Browser-Fenster offen haben wird - weil das Ganze eine "Anwendung" ist, keine WWW-site - deshalb sind beide Ereignisse möglicherweise (hoffentlich ...) identisch.

Spätestens im zweiten Fall, eventuell aber auch im ersten, möchte ich gerne im 1. Fenster (!) wieder einen JavaScript-Event bekommen, um meinen "Passiv-Modus" wieder auf "aktiv" zurück zu schalten.
Ich habe aber noch keinen Weg gefunden, dies elegant und benutzerfreundlich zu realisieren.

Die Abgabe des Fokus des 2. Fensters kriege ich über den onBlur-Event dieses 2. Fensters mit. Aber wie rufe ich an dieser Stelle eine Funktion auf, die im 1. Fenster definiert ist und _dort_ etwas tun soll?
Irgendwie fehlt mir da der Adressierungspfad durch die Objektstrukturen - und womöglich geht es auch gar nicht in dieser Art und Weise (über Fenster-Grenzen hinweg).

Die andere Möglichkeit wäre, im 1. Fenster zu reagieren.
Dort scheint es aber keinen passenden Event ("onTop"?) zu geben, der mir sagen würde, daß das 1. Fenster wieder sichtbar ist.
Mein Problem wäre keines, wenn ich meine Besucher dazu zwingen würde, einmal in das entsprechende Fenster zu klicken - dann bekommt dieses Fenster einen onFocus-Event und ich kann darauf reagieren.

Ich möchte aber gerne erreichen, daß das Fenster "von selbst" merkt, daß es wieder sichtbar ist. Ich möchte dem Benutzer ersparen, etwas tun zu müssen, damit er in den vorherigen Zustand dieses Fensters zurück gelangt. Dieser eine Mausklick würde erfordern, daß ich ihm begreiflich mache, wieso er ihn braucht ... und das würde ihn einerseits intellektuell überfordern und andererseits ärgern.
Die Lösung mit diesem einen Mausklick (und einem dynamisch eingeblendeten Layer mit dem Erklärungstext) ist meine fallback-Strategie, falls ich nichts besseres mehr finden sollte.

Jeder Hinweis, der mich meinem Ziel näher bringen könnte, wäre mir recht - auch Ideen, das Ganze völlig anders zu lösen. (Die Existenz der beiden Fenster ist allerdings nicht diskutierbar, und die Notwendigkeit, mit diesen beiden "Betriebsmodi" zu arbeiten, auch nicht - denn diese zu etablieren, ohne dabei Funktionalität zu verlieren, ist der Sinn der ganzen Aktion.)
Meine stille Hoffnung gründet sich natürlich darauf, entweder aus dem 2. Fenster heraus die Funktion im 1. Fenster aufzurufen oder im 1. Fenster den passenden Event zu finden ...

Zu unterstützende Browser: Netscape 4 und 6, M$IE 5 und 6. (Mehr wäre angenehm, aber derzeit nicht notwendig.)

Viele Grüße
      Michael