Problem mit Fenster
Karl
- javascript
Hallo,
ich habe eine JS-Funktion die sich über eventhandler aufruft.
Einfache Funktionsweise, User klickt auf eine Miniaturansicht und das Bild wird in einem neuen Fenster groß dargestellt. Innerhalb diesem Fenster kann der User über einen "Fenster schließen"-Link das Fenster wieder schließen. Problem an dieser Sache ist, wenn der User auf eine andere Miniaturansicht klickt, ohne das vorherige Fenster geschlossen zu haben, liegen zwei Fenster übereinander und wechseln jede Sekunde in den Vordergrund. Das ist ganz und gar nicht schön. Wie kann ich dieses Problem elegant lösen? Am liebsten wäre es mir, wenn sich das zuvor geöffnete Fenster wieder schließt, sofern ein anderes geöffnet wurde. Leider habe ich keine Ahnung wie ich das machen soll, und bitte somit um Hilfe.
Grüße
Karl
Hi,
Wie kann ich dieses Problem elegant lösen? Am liebsten wäre es mir,
wenn sich das zuvor geöffnete Fenster wieder schließt, sofern ein
anderes geöffnet wurde. Leider habe ich keine Ahnung wie ich das
machen soll, und bitte somit um Hilfe.
Ein möglicher Ansatz:
Du machst machst das Fenster jedesmal mit dem selben Namen auf.
Beim Aufruf der Funktion prüfst du, ob das Fenster mit dem Namen vorhanden ist. Ist das vorhanden, dann schliesst du es erst (win.close() ) und öffnest es mit dem neuen Bild nochmal.
MfG,
Juan
Hi,
Ein möglicher Ansatz:
Du machst machst das Fenster jedesmal mit dem selben Namen auf.
Wie meinst du das? Meinst du den Funktionsnamen?
Grüße Karl
Hi,
ich nehme an du öffnest dein Fenster mit window.open? Dann heb dir den Rückgabewert in einer JavaScript Variable auf, z.B.
meinPopup = window.open...
Bevor du ein neues Popup öffnest, hast du dann weiterhin Zugriff auf das Alte, vgl:
if ((meinPopup != null) && !(meinPopup.closed))
meinPopup.close();
MfG
Rouven
ich nehme an du öffnest dein Fenster mit window.open? Dann heb dir den Rückgabewert in einer JavaScript Variable auf, z.B.
meinPopup = window.open...Bevor du ein neues Popup öffnest, hast du dann weiterhin Zugriff auf das Alte, vgl:
if ((meinPopup != null) && !(meinPopup.closed))
meinPopup.close();
Hi,
ja ich öffne die Fenster mit window.open.
Wenn ich es nach deinem Vorschlag mache, schließt sich das Fenster allerdings sofort wieder.
Gruß
Karl
Hi,
Wenn ich es nach deinem Vorschlag mache, schließt sich das Fenster allerdings sofort wieder.
*seufz*, lass mich raten, du hast den Quellcode in der Reihenfolge abgeschrieben wie ich ihn oben gepostet habe? Wenn ja, das solltest du überdenken. Du willst das Fenster ja auch nicht schließen nachdem du es aufgemacht hast, sondern bevor du ein neues aufmachst...
MfG
Rouven
Hi,
Wenn ich es nach deinem Vorschlag mache, schließt sich das Fenster allerdings sofort wieder.
*seufz*, lass mich raten, du hast den Quellcode in der Reihenfolge abgeschrieben wie ich ihn oben gepostet habe? Wenn ja, das solltest du überdenken. Du willst das Fenster ja auch nicht schließen nachdem du es aufgemacht hast, sondern bevor du ein neues aufmachst...
nun, deinen code an den anfang der funktion zu setzen macht ja auch wenig sein, da die variable 'meinpopup' beim ersten aufruf noch nicht gesetzt ist und die js-funktion somit einen error verursacht.
nun, deinen code an den anfang der funktion zu setzen macht ja auch wenig sein, da die variable 'meinpopup' beim ersten aufruf noch nicht gesetzt ist und die js-funktion somit einen error verursacht.
Dann setz halt ein var win=null; davor.
MfG
Rouven
Hi,
Dann setz halt ein var win=null; davor.
sry, wenn meine Frage für dich nicht anspruchsvoll genug ist, aber ich habe so gut wie keine Ahnung von Javascript, und wozu die Variable 'win' gut ist, weiß ich leider auch nicht.
Selbst mit var win=null; funktioniert mein Script auch nicht mehr.
Grüße Karl
Hallo,
Dann setz halt ein var win=null; davor.
Selbst mit var win=null; funktioniert mein Script auch nicht mehr.
Du mußt dieses var win = null _vor_ Deine Funktion setzen, also so:
var win = null;
function .....
Denn sonst wird ja bei jedem Aufruf der Funktion, die Variable wieder auf null gesetzt, selbst wenn bereits ein geöffnetes Popup-Fenster existiert.
(Ich beziehe mich mal auf Dein weiter oben gepostetes Script, insbesondere den auskommentierten Bereich, der nämlich ansonsten ok ist.)
Ciao,
Andreas
danke an alle für die Hilfe!!!!
Hallo,
ich habe eine JS-Funktion die sich über eventhandler aufruft.
Einfache Funktionsweise, User klickt auf eine Miniaturansicht und das Bild wird in einem neuen Fenster groß dargestellt. Innerhalb diesem Fenster kann der User über einen "Fenster schließen"-Link das Fenster wieder schließen. Problem an dieser Sache ist, wenn der User auf eine andere Miniaturansicht klickt, ohne das vorherige Fenster geschlossen zu haben, liegen zwei Fenster übereinander und wechseln jede Sekunde in den Vordergrund. Das ist ganz und gar nicht schön. Wie kann ich dieses Problem elegant lösen? Am liebsten wäre es mir, wenn sich das zuvor geöffnete Fenster wieder schließt, sofern ein anderes geöffnet wurde. Leider habe ich keine Ahnung wie ich das machen soll, und bitte somit um Hilfe.
nun, ich poste mal meinen Code, vielleicht kann mir ja doch noch jemand weiter helfen.
function PopIt(fenstertitel, bild, breite, hoehe)
{
//var popup = null;
//if((popup != null) && !(popup.closed))
//popup.close();
hoch = hoehe+18;
var s1 = "<TITLE>"+ fenstertitel +"</TITLE><BODY BGCOLOR=\"ffffff\" link=\"#003366\" vlink=\"#003366\" alink=\"#003366\" BACKGROUND='"+ bild +"' topmargin=\"0\" leftmargin=\"0\" marginwidth=\"0\" marginheight=\"0\" onblur=\"javascript:setTimeout('self.focus()',1500);\">";
var s2 = "<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 HEIGHT=\""+ hoch +"\" WIDTH='"+ breite +"'>";
var s3 = "<TR><TD HEIGHT=\""+ hoehe +"\"></td></tr>";
var s4 = "<TR><TD VALIGN=\"top\" HEIGHT=\"18\" bgcolor=\"#ffffff\">";
var s5 = "<center><font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"1\">| <a href=\"javascript:self.close()\">Fenster schließen</a> |</font></center>";
var s6 = "</TD></TR></TABLE></BODY>";
popup = window.open("","","height="+ hoch +",width="+ breite +",scrollbars=no,left=50,top=50,dependent=yes");
popup.document.write(s1 + s2 + s3 + s4 + s5 + s6);
popup.document.close();
}
Grüße Karl