Mein Problem:
Ich habe ein PHP-Script, welches Aufgrund von Werten in einer Datenbank entscheidet, ob Fenster geöffent werden sollen oder nicht. Sollen welche geöffnet werden, schreibt PHP JavaScript in ein Template und zeigt das Template an.
Wurde ein Popup mal geöffnet und nicht vom Anwender quittiert aber wurde geschlossen, soll es wieder geöffnet werden, da es sein könnte, daß es versehentlich geschlossen und nicht gelesen wurde. Ist ein Popup aber gerade offen und noch nicht quittiert, soll es nicht wieder reloaden. Da sich die Werte in der DB noch nicht geändert haben, schreibt PHP wieder JS ins Template. Zumindest öffnet sich kein neues Popup mit dem gleichen Inhalt, weil das Handle des Fensters in der window.open noch das gleiche ist. Aber das Popup wird reloaded, was sehr störend sein kann, wenn man z. B. gerade den Text im Popup liest, runterscrollt und bei einem Reload wieder am Anfang steht und wieder runterscrollen muß, wo man gerade war.
Bisher habe ich nur die Möglichkeit gefunden, zu entscheiden, ob ein Fenster offen ist, indem man folgendes macht:
Code:
var InfoWin = window.open("datei1.htm", "Zweitfenster");
function CheckOpen () {
if (InfoWin.closed == true) {
//irgendwas machen
} else {
//irgendwas machen
}
}
Da der Parent jedoch verlorengeht, weil er sich regelmäßig neu lädt und das PHP-Script ausgeführt hat, kann ich natürlich die Rückgabe von window.open() nicht speichern und somit closed() nicht auf diese Rückgabe ausführen.
Das Ganze ist auch ohne PHP leicht zu skizzieren:
Fenster A öffnet beim Laden Fenster B.
Fenster A wird geschlossen.
Fenster A wird geöffnet und soll Fenster B nicht reloaden, falls es noch offen ist.
Bis jetzt schreibt PHP folgendes ins Template, falls im die DB sagt, es muß:
Code:
$return .= "<script language=\"javascript\">\n";
$return .= "newWin = window.open('SISOM.php?function=read&id=$id','$from','left=$left,top=$top,width=400,height=350,toolbar=0,location=0,menubar=0,scrollbars=1,resizeable=1,status=0');\n";
$return .= "</script>";
Kann mir da wer helfen?