schoener_nick
Mitglied
Hallo erstmal...
Folgendes ist mein Problem:
Ich habe ein Seite (im Folgenden bezeichne ich sie als Hauptseite), die einen iframe enthält. Dieser iframe lädt sich in regelmäßigen Abständen neu und öffnet über die Funktion "open_popup" onLoad ggf. ein PopUp. Dieses PopUp darf nur dann geöffnet werden, wenn es nicht schon offen ist. Daher findet mit der folgenden Funktion, die das Öffnen des PopUps übernimmt, zuerst eine Überprüfung statt, ob das PopUp schon offen ist. Dies geschieht jedes Mal, wenn der iframe sich neu lädt:
Ist top.popup == undefined, wurde das PopUp einfach noch nie geöffnet, ist top.popup.closed, wurde es schon geöffnet und wieder geschlossen. Trifft eines von beidem zu, soll das PopUp geöffnet werden. Logisch soweit. Ich verwende das "top", damit die Referenz auf das PopUp-Fenster auch dann noch zur Verfügung steht, wenn der iframe, in dem die Überprüfung stattfindet, neu geladen wurde. Ich kenn mich jetzt nicht so gut aus, aber ich stell mir das so vor, dass die Hauptseite die Referenz auf das PopUp in diesem Fall praktisch "behält".
Das Problem ist nun, dass dies natürlich nur funktioniert, wenn das Hauptfenster nicht auch neu geladen wird. Und genau in diesem Fall soll aber auch noch gewährleistet sein, dass sich das PopUp nicht neu lädt, wenn es bereits offen ist.
Interessanterweise verhalten sich hier der Internet Explorer und Mozilla unterschiedlich. Der Internet Explorer gibt als Wert von top.popup entweder "[object]" zurück, wenn das Fenster bereits geöffnet wurde (auch wenn es danach wieder geschlossen wurde) oder "undefined" wenn die Hauptseite neu geladen wurde, auch dann, wenn das PopUp noch geöffnet ist.
Mozilla gibt "[object]" zurück, wenn das PopUp geöffnet ist und der iframe neu geladen wird. Er gibt "null" zurück, wenn das PopUp wieder geschlossen ist und der iframe sich neu lädt und er gibt "undefined" zurück, wenn die Hauptseite neu geladen wird, unabhängig davon, ob das PopUp geöffnet ist oder nicht.
Warum gibt es im IE den Wert "null" in diesem Fall nie?
Das eigentlich Interessante (zumindest für mich) ist Folgendes: Im Mozilla lädt sich das PopUp überhaupt nicht neu, selbst wenn die Hauptseite neu geladen wird und die Funktion "open_popup" eigentlich bei Ihrer Überprüfung auf den Wert "undefined" stößt und das PopUp neu laden sollte. Das heißt, im Mozilla existiert mein Problem überhaupt nicht, im IE dagegen schon.
Ich bin mir jetzt nicht sicher, wie verständlich ich mich ausgedrückt habe, da ich selbst schon etwas verwirrt bin von dem Problem. Bei Unklarheiten einfach Fragen. Ich bin für jede Hilfe dankbar.
Wie lässt sich vom neu geladenen Hauptfenster aus überprüfen, ob das PopUp gerade geöffnet ist?
Danke im Voraus, ich hoffe auf Eure Hilfe!
Folgendes ist mein Problem:
Ich habe ein Seite (im Folgenden bezeichne ich sie als Hauptseite), die einen iframe enthält. Dieser iframe lädt sich in regelmäßigen Abständen neu und öffnet über die Funktion "open_popup" onLoad ggf. ein PopUp. Dieses PopUp darf nur dann geöffnet werden, wenn es nicht schon offen ist. Daher findet mit der folgenden Funktion, die das Öffnen des PopUps übernimmt, zuerst eine Überprüfung statt, ob das PopUp schon offen ist. Dies geschieht jedes Mal, wenn der iframe sich neu lädt:
Code:
if (top.popup == undefined || top.popup.closed) {
top.popup=window.open(...);
top.popup.focus();
}
Ist top.popup == undefined, wurde das PopUp einfach noch nie geöffnet, ist top.popup.closed, wurde es schon geöffnet und wieder geschlossen. Trifft eines von beidem zu, soll das PopUp geöffnet werden. Logisch soweit. Ich verwende das "top", damit die Referenz auf das PopUp-Fenster auch dann noch zur Verfügung steht, wenn der iframe, in dem die Überprüfung stattfindet, neu geladen wurde. Ich kenn mich jetzt nicht so gut aus, aber ich stell mir das so vor, dass die Hauptseite die Referenz auf das PopUp in diesem Fall praktisch "behält".
Das Problem ist nun, dass dies natürlich nur funktioniert, wenn das Hauptfenster nicht auch neu geladen wird. Und genau in diesem Fall soll aber auch noch gewährleistet sein, dass sich das PopUp nicht neu lädt, wenn es bereits offen ist.
Interessanterweise verhalten sich hier der Internet Explorer und Mozilla unterschiedlich. Der Internet Explorer gibt als Wert von top.popup entweder "[object]" zurück, wenn das Fenster bereits geöffnet wurde (auch wenn es danach wieder geschlossen wurde) oder "undefined" wenn die Hauptseite neu geladen wurde, auch dann, wenn das PopUp noch geöffnet ist.
Mozilla gibt "[object]" zurück, wenn das PopUp geöffnet ist und der iframe neu geladen wird. Er gibt "null" zurück, wenn das PopUp wieder geschlossen ist und der iframe sich neu lädt und er gibt "undefined" zurück, wenn die Hauptseite neu geladen wird, unabhängig davon, ob das PopUp geöffnet ist oder nicht.
Warum gibt es im IE den Wert "null" in diesem Fall nie?
Das eigentlich Interessante (zumindest für mich) ist Folgendes: Im Mozilla lädt sich das PopUp überhaupt nicht neu, selbst wenn die Hauptseite neu geladen wird und die Funktion "open_popup" eigentlich bei Ihrer Überprüfung auf den Wert "undefined" stößt und das PopUp neu laden sollte. Das heißt, im Mozilla existiert mein Problem überhaupt nicht, im IE dagegen schon.
Ich bin mir jetzt nicht sicher, wie verständlich ich mich ausgedrückt habe, da ich selbst schon etwas verwirrt bin von dem Problem. Bei Unklarheiten einfach Fragen. Ich bin für jede Hilfe dankbar.
Wie lässt sich vom neu geladenen Hauptfenster aus überprüfen, ob das PopUp gerade geöffnet ist?
Danke im Voraus, ich hoffe auf Eure Hilfe!