Hi Antje!
Der IE3 kennt closed und auch focus() nicht und spuckt eine Fehlermeldung aus, schließt aber das Fenster trotzdem und der Navi 3 schließt das Fenster und bricht dann die Ausführung der Funktion ab. Da hilft nur die Trennung der Schließfunktion von der Öffnungsfunktion. Wenn man dann mit einem Link erst das Öffnen mittels setTimeout aufruft und dann die Schließfunktion klappt es.
Aeh... was? Wieso Schliessfunktion? Es sollte doch nur ein Fenster geoeffnet bzw. der Focus drauf gesetzt werden.
Stimmt, ich haette dran denken sollen, dass der IE3 closed und focus() nicht kennt. Aber Navi3 sollte sie eigentlich schon kennen, zumindest laut Selfhtml (na ok, die Angaben stimmen nicht immer).
Mmh, also erstmal muss ich feststellen, dass mein abgelieferter Code falsch rum ist, d.h. if- und else-Zweig sind vertauscht. Sollte also eigentlich heissen:
function fehler() {
if (fehlerwin && (!fehlerwin.closed)) {
if (window.focus) fehlerwin.focus();
} else {
fehlerwin = window.open("fehler.html", "fehler", "width=250,height=250,left=300,top=320");
}
}
Wenn ein Browser die focus()-Methode nicht kennt, sollte er "if (window.focus)" ja eigentlich zu false auswerten und demnach "fehlerwin.focus()" ignorieren. (Dummerweise bringt er ja dann das Fenster nicht wieder in den Vordergrund.) Genauso sollte er die closed-Eigenschaft mit false bewerten, denn es koennte ja z.B. der Test sein, ob eine closed()-Methode zur Verfuegung steht. Ich werde jetzt leider aus Deinem "schließt aber das Fenster trotzdem" nicht ganz schlau, deswegen biete ich vorerst mal diese veraenderte Variante an.
function fehler() {
if (fehlerwin && window.focus && (!fehlerwin.closed)) {
fehlerwin.focus();
return;
}
fehlerwin = window.open("fehler.html", "fehler", "width=250,height=250,left=300,top=320");
}
Wie gesagt, eigentlich sollte das funzen, aber wenn der IE3 da Fehler bringt, muss wohl leider eine Browserabfrage rein, oder man oeffnet das Fenster einfach jedesmal neu, wie Du es hattest.
Calocybe