Existenz eines Fensters ??
Michael B.
- javascript
0 Stefan Muenz0 Michael B.0 Calocybe
Hallo Forumsleser,
gibt es eine Möglichkeit folgendes
Problem mit JavaScript zu lösen ?
<Problem>
Beim Aufruf einer Seite soll via onLoad()
festgestellt werden ob ein Window namens "SuchFenster"
existiert, sprich offen ist.
Wenn ja, will ich es schliessen.
Wenn ich also starte mit ...
if (SuchFenster.closed == false) {
SuchFenster.close();
}
dann bekomme ich in dem Moment eine Fehlermeldung
wenn garkein Fenster namens "SuchFenster" existiert.
Also, wie frage ich nach der Existenz eines Fensters ??
</Problem>
Danke schoneinmal.....
Micha
Hallo Michael
»» if (SuchFenster.closed == false) {
SuchFenster.close();
»» }
Probier es mal mit:
if (SuchFenster) {
SuchFenster.close();
}
Immerhin ist ein Fenster der Logik nach ein Objekt, das einfach mit seinem Namen ansprechbar ist, weil es auf der obersten Objektebene, naemlich der der Fenster, liegt. Und die Existenz von Objekten kann man durch so eine Abfrage wie die obige ueberpruefen ...
viele Gruesse
Stefan Muenz
Hallo S,
Probier es mal mit:
if (SuchFenster) {
SuchFenster.close();
}Immerhin ist ein Fenster der Logik nach ein Objekt, das einfach mit seinem Namen ansprechbar ist, weil es auf der obersten Objektebene, naemlich der der Fenster, liegt. Und die Existenz von Objekten kann man durch so eine Abfrage wie die obige ueberpruefen ...
Genau so sah mein erste Versuch aus.
Nun bekomme ich immer die Fehlermeldung
"SuchFenster nicht definiert".
Ich kann mir das nicht erklären, denn im Normalfall sollte doch, wenn
if (SuchFenster) gleich false ist ( also nicht existent ) einfach nichts passieren, oder ??
Grüsse
Micha
Hallo!
Nun bekomme ich immer die Fehlermeldung
"SuchFenster nicht definiert".
Ich kann mir das nicht erklären, denn im Normalfall sollte doch, wenn
»» if (SuchFenster) gleich false ist ( also nicht existent ) einfach nichts passieren, oder ??
Ich hatte ein aehnliches Problem ... habe mir dann mit einer Variable geholfen, die auf 0 steht,
solange das Fenster noch nie geoeffnet wurde. Beim ersten Oeffnen hab ich sie dann auf 1
gesetzt. Auf das Fenster zuzugreifen ohne dass es geoeffnet wurde hat aber z.B. mit IE4 nicht
funktioniert ... keine Ahnung wieso. Benuetzt Du den zufaellig? Mit NS4.7 und IE5 geht aber
alles ...
Gruesse
Poldi.
Hallo,
ist ja auch klar warum das nicht funzt. Denn wenn Du eine Abfrage zu Suchfenster aufrufst muß Suchfenster auch vorhanden sein. Ansonsten kann er ja die Abfrage nicht ausführen.
Ich würde auch die Lösung von Poldi vorschlagen, denn sonst sehe ich da keine andere Möglichkeit oder kann man geöffnete Fenster ansprechen?
Wenn das geht, kannst Du die geöffnenten Fenster durchgehen und gucken ob eins mit dem Namen Suchfenster dabei ist und das dann schliessen.
CU
Sebastian
Hi Stefan!
Probier es mal mit:
if (SuchFenster) {
SuchFenster.close();
}
Immerhin ist ein Fenster der Logik nach ein Objekt, das einfach mit seinem Namen ansprechbar ist, weil es auf der obersten Objektebene, naemlich der der Fenster, liegt. Und die Existenz von Objekten kann man durch so eine Abfrage wie die obige ueberpruefen ...
Mmh, naja, weiss nicht so recht. Antje hat mal sowas geschrieben, dass es ungefaehr so geht, aber prinzipiell ist dieses SuchFenster eigentlich ein Variablenname (gleichzusetzen mit window.SuchFenster), aber der Fenstername "SuchFenster" nicht. Vielleicht kann Antje nochmal sagen, unter welchen Umstaenden das doch funzt.
Ansonsten wuerde ich vorschlagen, mit
sf = window.open("", "SuchFenster")
erhaelt man eine Referenz auf ein evtl. offenes Fenster mit diesem Namen und kann es dann mit
sf.close()
schliessen.
So long
Hallo
Probier es mal mit:
if (SuchFenster) {
SuchFenster.close();
}
So geht es nicht, weil die Variable fehlt. Ohne dem geht es einfach nicht. Der Fenstername dient eher dazu das target zu sichern.
Mmh, naja, weiss nicht so recht. Antje hat mal sowas geschrieben, dass es ungefaehr so geht, aber prinzipiell ist dieses SuchFenster eigentlich ein Variablenname (gleichzusetzen mit window.SuchFenster), aber der Fenstername "SuchFenster" nicht. Vielleicht kann Antje nochmal sagen, unter welchen Umstaenden das doch funzt.
Innerhalb von frames kann man - auch geöffnete Fenster mit parent.Fenstervariable ansprechen. Die Fenstervariable ist aber zwingend notwendig. Nicht möglich ist dies aber -wie beabsichtigt- beim Laden einer neuen Seite in ein Browserfenster. Das finde ich auch ganz in Ordnung so, denn dafür war ja die vorhergehende Seite zuständig.
Dein Tip Roland ist der einzig mögliche. Mein Tip wäre, das Fenster beim Verlassen der öffnenden Seite einfach schließen und zwar mittels unonload()
Viele Grüße
Antje