Existenz eines Fensters anhand des Namens prüfen
Timo Neumaier
- javascript
Hallo
Ich möchte prüfen, ob ein Fenster mit einem bestimmten Namen schon vorhanden ist oder nicht.
Wie lautet der notwendige JavaScript-Befehl?
Danke,
Timo Neumaier
Hallo du da draußen,
Wenn du das Fenster mit open() in der aktuelle Seite geöffnet hast, kannst du es mit closed() (http://selfhtml.teamone.de/javascript/objekte/window.htm#closed überprüfen, ob es bereits geschlossen wurde. Wenn es allerdings von einer anderen Seite geöffnet wurde, kannst du es nicht überprüfen, was ja auch nur ganz selten Sinn machen würde.
Grüße von hier drinnen, aus Biberach an der Riss (http://www.stadt-biberach.de),
Dogfish
Hallo Dogfish
Wenn du das Fenster mit open() in der aktuelle Seite geöffnet hast, kannst du es mit closed() (http://selfhtml.teamone.de/javascript/objekte/window.htm#closed überprüfen, ob es bereits geschlossen wurde. Wenn es allerdings von einer anderen Seite geöffnet wurde, kannst du es nicht überprüfen, was ja auch nur ganz selten Sinn machen würde.
Ich erkläre mal kurz, warum ich diese Frage gestellt habe:
Ich habe etwas programmiert, womit die User eines privaten Bereiches miteinander chatten können (so wie es bei ICQ ist). Nun soll an einer bestimmten Stelle überprüft werden, ob neue Nachrichten vorhanden sind. Wenn ja, und es ist noch kein Fenster geöffnet, dann soll dies geöffnet werden, ansonsten nicht.
Bsp.: User A kriegt eine Nachricht von B. Nun soll ein Fenster aufspringen. Jetzt chatten diese User miteinander und es kommen ständig neue Nachrichten. Da aber schon ein Chat zwischen diesen beiden Usern geöffnet ist, soll nicht jedesmal wieder ein Fenster aufspringen.
Was heißt denn aktuelle Seite? Nehmen wir mal an, das Fenster wurde von Seite a.html aus geöffnet. Nun hat der User aber schon im gleichen Fenster Seite b.html ausgewählt. Heißt aktuelle Seite gleiches Fenster oder wirklich gleiche HTML-Seite?
Danke,
Timo Neumaier
Hallo
Im Zusammenhang mit der Programmierung eines User-Chats habe ich noch eine Frage:
Ich habe einen DIV-Tag, in dem die Nachrichten angezeigt werden, mit der CSS-Angabe overflow: scroll ausgestattet. Die neuesten Nachrichten erscheinen unten. Nun sollte (wie bei ICQ auch) automatisch nach unten gescrollt werden, wenn unten neue Nachrichten erscheinen. Im Fenster kann man ja mit scrollTo arbeiten, wie mache ich das im DIV-Tag?
Nebenbei: Der Internet-Explorer versteht auch die Angabe overflow-x und -y, wie sieht das bei anderen Browsern aus? Ist das CSS-Standard?
Timo Neumaier
Hallo du da draußen,
Ich habe einen DIV-Tag, in dem die Nachrichten angezeigt werden, mit der CSS-Angabe overflow: scroll ausgestattet. Die neuesten Nachrichten erscheinen unten. Nun sollte (wie bei ICQ auch) automatisch nach unten gescrollt werden, wenn unten neue Nachrichten erscheinen. Im Fenster kann man ja mit scrollTo arbeiten, wie mache ich das im DIV-Tag?
Die Unterstützung von overflow:scroll lässt ja noch sehr zu wünschen übrig. Ich würde irgendetwas anderes nehmen. Als Ausweg könntest du es umgekehrt machen:
Du machst kein overflow:scroll und machst alles, was nicht in diesem Bereich ist, stehen (position:fixed (http://selfhtml.teamone.de/css/eigenschaften/positionierung.htm#position)). Das hätte dann den Vorteil, dass du das document scrollen könntest. Dann würde quasi nur das scrollen, was vorher im Div stand und der Rest würde stehen bleiben. Du hättest halt diese Nachteile:
Nebenbei: Der Internet-Explorer versteht auch die Angabe overflow-x und -y, wie sieht das bei anderen Browsern aus? Ist das CSS-Standard?
In SelfHTML ist es zu Mindest mal nicht aufgeführt. Ich schätze mal, es gehört dann auch nicht zum Standard.
Grüße von hier drinnen, aus Biberach an der Riss (http://www.stadt-biberach.de/),
Dogfish
Hallo ihr da draußen,
Was heißt denn aktuelle Seite? Nehmen wir mal an, das Fenster wurde von Seite a.html aus geöffnet. Nun hat der User aber schon im gleichen Fenster Seite b.html ausgewählt. Heißt aktuelle Seite gleiches Fenster oder wirklich gleiche HTML-Seite?
Was in dem neuen Fenster für eine Seite geladen wurde, ist in dem Moment egal. Wichtig ist die Seite die das Fenster öffnet. Ich hatte auch schon mal ein solches Problem mit einem Chat. Bei mir war das Problem, dass ich überprüfen wollte, ob ein Fenster schon geöffnet war, aber meine Seite hat sich alle 7 Sekunden aktualisiert. Und sobald es sich ein Mal aktualisiert hat, kann man nicht mehr überprüfen, ob es offen ist.
Ich denke mal, dass sich die Seite, die versucht, die Nachrichten zu öffnen, auch ab und zu mal aktualisiert. Dann kannst du nicht überprüfen, ob die Nachricht schon offen ist.
Wenn sie sich nicht aktualisiert, daher, dass ein JavaScript-Objekt immernoch verfügbar ist, wenn versucht wird, die neue Nachricht zu öffnen, geht es ganz einfach:
Du lädst einfach das Objekt des geöffneten Fensters in eine Variable:
var dasfenster = window.open([...]);
Dann kannst du später überprüfen, ob das Fenster noch da ist.
if(!dasfenster.closed)
alert("Es ist noch offen!");
Aber wie gesagt nur dann, wenn die Seite noch "am Laufen" ist.
Ich hoffe, du hast es verstanden und ich konnte dir ein Wenig helfen.
Grüße von hier drinnen, aus Biberach an der Riss (http://www.stadt-biberach.de/),
Dogfish