opener auf Existenz abfragen für IE5-PC - if(!opener)
hannibal
- javascript
0 LanX0 Thomas Meinike
Hallo,
das ist mein erster Beitrag in Eurem Forum. Habe leider keinen anderen Beitrag gefunden, der mein Problem löst.
Deswegen hier die Frage:
Es wird ein Mutterfenster geöffnet über window.location=etc.
Aus der Mutter wird ein Hilfefenster geöffnet mit "window.open(etc)"
Vom Hilfefenster kommt man mit "opener.focus()" zum Mutterfenster zurück. Andere Methoden haben nicht hingehauen, weil bei mehrfachem Hinundher das Mutterfenster keine focus mehr bekommt auf dem PC.
Wenn nun das Mutterfenster geschlossen wird und man vom Hilfefenster aus wieder auf den Link klick zum Mutterfenster kann das natürlich nicht mehr hinhauen.
Also habe ich eine if-Abfrage eingebaut:
if(!opener)dann öffne Mutter
das klappt auf dem IE5-Mac auch gut, aber nicht für den IE5-PC (nicht 5.5!).
Auch die Schreibweise für NN
if(operner.closed==true)öffneMutter
geht nur für den NN und nicht für IE5-PC.
Jetzt weiß ich nicht mehr weiter.
Habe alles mögliche ausprobiert:
zB. newWin=window.open(hilfefenster)
new Win.erzeuger=self;
Man kann dann zwar mit "erzeuger" arbeiten, aber nicht
if(!erzeuger) oder if(erzeuger.closed==1)fragen.
Das gibt entweder den Fehler "Objekt erwartet" oder "Zugriff verweigert" (???hatte ich noch nie)
Ich brauche nun dringend eine Schreibweise, wie ich den "!opener" zu einem verwertbaren Objekt für IE5-PC mache.
Hat da draußen jemand eine Idee???
Vielen Dank
--------------------
Hannibal
Hi
ich weiß kenn jetzt keine saubere Loesung, aber mit
try/catch (IE5) koenntest du einen Fehler beim Zugriff auf den
opener abfangen! Alternativ onError eventhandler!
Hilfts?
Tschau
Rolf
aber mit
try/catch (IE5) koenntest du einen Fehler beim Zugriff auf den
opener abfangen! Alternativ onError eventhandler!
@Rolf
über on Error hatte ich mir auch schon gedanken gemacht.
Auf try/catch bin ich noch nicht gekommen.
Ich habe beides noch nie verwendet und muß mir das erst anlesen.
Also, wenn ich den Fehler abfangen könnte, kannn ich dann auch eine Reaktion, sprich Öffnen des geschlossenen Mutterfensters erreichen?
Oder kommt dann einfach die große Leere, also es passiert weiter nichts.
Weil, ich will doch das Fenster wieder öffnen, wenn es zu ist.
Also würde ein Fehler bedeuten in diesem Falle, das es zu ist.
Kann ich also sagen onError(window.open()) oder sowas?.
oder
FOR=document EVENT=onError
window.open(Mütterchen)
Wenn das geht, dann wärs das.
Erstmal Danke und viele Grüße
Hi
Ich habe beides noch nie verwendet und muß mir das erst anlesen.
dito :-)
Kann ich also sagen onError(window.open()) oder sowas?.
IMHO ja! Allerdings solltest du sicher sein das nur diese Fehlerquelle in
Frage kommt, sprich nur sehr wenig Code auf der entsprechenden Seite.
Tschuessi
Rolf
@Rolf
Danke.
Hätte noch jemand einen Tip, wie man das mit try/catch macht?
Ich bin mir ziemlich sicher, daß nur dort ein Fehler auftreten kann.
Also
if(!opener) geht für IE5-Mac, aber macht einen Fehler in IE5-PC und NN
if(opener.closed==true) geht in NN macht aber eine Fehler in IE5 überhaupt.
Und IE4.5-Mac macht bei allem einen Fehler.
Da ich vorher eine CSS-Weiche vorgeschaltet habe, habe ich alle Browserversionen als Variablen vorrätig. (indexOf.Navigator.userAgent etc)
Kann da jemand was mit anfangen???
Danke
Viele Grüße
if(!opener)dann öffne Mutter
das klappt auf dem IE5-Mac auch gut, aber nicht für den IE5-PC (nicht 5.5!).
Schon mal if(!opener.closed) probiert?
MfG, Thomas
Schon mal if(!opener.closed) probiert?
@MfG, Thomas
Ich habe probiert if(opener.closed)
aber das ist falsche Syntax, weil closed entwerder true oder false ist.
also heißt das so:
if(opener.closed==true)dann ist das Fenster geschlossen, wenn es true ist.
Das geht für den NN, aber nicht für IE. Frag mich mal warum. So bin ich ja hier gelandet.
Aber ich kanns ja trotzdem mal versuchen.
Dank und viele Grüße
Schon mal if(!opener.closed) probiert?
@MfG, Thomas
Ich habe probiert if(opener.closed)
aber das ist falsche Syntax, weil closed entwerder true oder false ist.
also heißt das so:
if(opener.closed==true)dann ist das Fenster geschlossen, wenn es true ist.
if(!opener.closed) ist durchaus keine falsche Syntax, es verneint die Pruefung auf closed, d. h. wenn not closed, dann noch geoeffnet. Explizite Abfragen auf ==true oder ==false macht man eher selten.
Analog fragt zum Beispiel if(!document.layers) nach Browsern, die keine Layers-Collection kennen.
Vermutlich liegt es doch am verwendeten Browser.
MfG, Thomas