Problem bei Prüfung ob Fenster geöffnet ist..
Martin
- javascript
0 Horst Nogajski0 Spaceman Spiff0 Martin0 Lutz T.
Hallo zusammen !
Ich schreibe das erste mal hier ins Forum, hoffe also das ich alles richtig mache ;)
Also ich habe ein kleines Problem, ich habe ein Formular das ich in einem Popup weiterverarbeite:
function loginudc()
{
udcintern = open('urldesneuenfensters','adminintern','width=800,height=600,status=0,menubar=0,scrollbars=0,resizeable=0,toolbar=0,location=0,directories=0');
document.login.target = "adminintern";
document.login.submit();
udcintern.focus();
setTimeout("self.location.reload();", 4000);
}
<form action='urldesneuenfensters' method=POST name="login" onSubmit="loginudc()">
Wenn jetzt die Seite aus der das neue Fenster geöffnet wurde neu geladen wird, gibt es dort 2 Links zu folgenden Funktionen:
function logoutudc()
{
udcintern = open('urldesneuenfensters','adminintern','width=800,height=600,status=0,menubar=0,scrollbars=1,resizeable=0,toolbar=0,location=0,directories=0');
udcintern.focus();
setTimeout("udcintern.close();", 4000);
setTimeout("self.location.reload();", 4000);
}
function openudc()
{
udcintern = open('urldesneuenfensters','adminintern','width=800,height=600,status=0,menubar=0,scrollbars=1,resizeable=0,toolbar=0,location=0,directories=0');
udcintern.focus();
}
Die erste klappt einwandfrei, also das Logout. Aber mit der Zweiten habe ich Probleme. openudc() klappt zwar wunderbar, aber wenn ich es so mache wie bisher, dann wird die Seite im Popup ja neu geladen, das heisst fals was vom User geändert wurde ist das gelöscht. Also würde ich gerne überprüfen ob das Popup noch offen ist, wenn ja, dann der focus, wenn nein, dann neu laden.
Ich hab's so versucht:
if (window.udcintern)
{udcintern.focus();}
else
{neu laden}
Aber so klappt das nicht.. hab ich nen Denkfehler gemacht? Oder kann es sein das beim ersten Aufruf durch das Formular der Name für das Popup nicht gegeben wird.. ?
Bin für jede Hilfe sehr dankbar ( sitze schon nen Abend an diesem verflixten ding.. )
Martin
Hallo Martin,
Ich hab's so versucht:
if (window.udcintern)
{udcintern.focus();}
else
{neu laden}
Aber so klappt das nicht.. hab ich nen Denkfehler gemacht?
Weiß nicht, und bin sehr muede, deshalb verstoße ich jetzt gegen die Forumsverhaltensweise und geb dir einen ungetesteten Tip.
Du solltest vielleicht mit "window.closed" (true oder false) den zustand deines Fensters bzw. das Vorhandensein abfragen.
Vielleicht klappts dann!?
Viel Glück und gute nacht
Horst
Hi Martin,
ich verwende immer das script von Doc JavaScript:
var udcintern=null;
function myWindowOpener()
{
if (udcintern && !udcintern.closed) {udcintern.focus()}
else {udcintern=window.open(...)}
}
lg Spiff
Hallo zusammen,
danke Spaceman. Dein Script funktioniert einwandfrei. Aber ich habe das selbe Problem das ich vorher hatte ( jedoch nicht beschrieben habe in meinem Post ) Beim ersten öffnen des Popup's , also durch das Formular. Wird das name nicht gesetzt, also das Scipt findet kein fenster mit dem namen udcintern. Hab ich das was falsch gemacht? Wenn openudc() einmal das neue fenster geöffnet hat dann klappt die abfrage einwandfrei..
Jemand ne Idee?
Danke, Martin
Hallo Martin
function loginudc()
{
udcintern = open('urldesneuenfensters','adminintern','width=800,height=600,status=0,menubar=0,scrollbars=0,resizeable=0,toolbar=0,location=0,directories=0');
document.login.target = "adminintern";
document.login.submit();
udcintern.focus();
setTimeout("self.location.reload();", 4000);
}
<form action='urldesneuenfensters' method=POST name="login" onSubmit="loginudc()">
Wenn jetzt die Seite aus der das neue Fenster geöffnet wurde neu geladen wird, gibt es dort 2 Links zu folgenden Funktionen:
Wenn die Seite neu geladen wird, ist vor allem die Referenz zu dem
Popup durch die Variable udcintern nicht mehr vorhanden.
Mit einem kleinen Trick kannst Du diese Referenz wiederherstellen:
udcintern = open('', 'adminintern');
Wenn das Fenster mit dem Namen 'adminintern' noch vorhanden ist, sollte dabei eigentlich nichts weiter passieren.
Danach kannst Du wieder mit der Variable udcintern arbeiten.
Eine andere Möglichkeit wäre, die neu zu ladende Seite in ein Frameset mit 100%,* Aufteilung zu stecken und das Öffnen des Popups von dem zweiten Frame auszuführen, dann bleibt die Variable udcintern (im zweiten Frame) erhalten.
Gruß Lutz.