Simon Gude: PopUp + vorherige Instanz schließen close()

Hallo liebe Leute!

Ich habe im folgenden Script eine PopUp Routine, die eigentlich am Anfang checken soll, ob noch ein PopUp dieser Instanz offen ist bzw. ein Wert zugewiesen hat. Wenn ja, soll es dieses PopUp schließen und ein neues aufbauen.

Problem: es geht noch nicht so richtig. Es scheint das alte PopUp nicht zu schließen. Denn die Größe des PopUps ist immer gleich, wenn man verschiedene Links (darin sind dann Bilder) anklickt.

Vielleicht kann mir jemand helfen, wäre sehr dankbar!

Simon

Script:
------->

function ImageWindow(theURL,ImgName,xSize,ySize)
{
 var popup=null;
 if(popup != null && popup.closed == false) popup.close();
 var Imgsrc = theURL;
 if (ImgName == '') ImgName = theURL.substring(theURL.lastIndexOf('/')+1,theURL.lastIndexOf('.')).replace(/_/," ");
 popup=window.open(Imgsrc,"Dummy",'width='+xSize+',height='+ySize+',left=200,resizable=no,top=150,location=no,screenX=0,screenY=0,dependent=yes,toolbar=no,status=no,menubar=no,scrollbar=no');
 popup.document.write('<html><head><title>ImgName</title></head>');
 popup.document.write('<body bgcolor="#000000">');
 popup.document.write('<img src=" '+Imgsrc+'"  alt="" border="0" onClick="self.close()" ');
 popup.document.write('</body></html>');
 popup.focus();
}

Aufruf mittels Link:
--------------------

<a href="javascript:ImageWindow('bild.gif','Titel des Bildes',640,480);"

  1. Hallo Simon,

    Vielleicht kann mir jemand helfen, wäre sehr dankbar!

    Schau dir mal diese beiden Zeilen an:

    var popup=null;
     if(popup != null && popup.closed == false) popup.close();

    ^^^^^^^^^^^^^
    besonders das. Was fällt dir auf?

    Zu diesem Konstrukt schrieb ich bereits vorhin etwas, nimm es dir zu Herzen.

    <a href="javascript:ImageWindow('bild.gif','Titel des Bildes',640,480);"

    Grüße
      David

    --
    >>Nobody will ever need more than 640k RAM!<<
    1981 Bill Gates
    1. Hallo David!

      Schau dir mal diese beiden Zeilen an:

      ja, ok mach ich grad ;)

      var popup=null;
       if(popup != null && popup.closed == false) popup.close();
             ^^^^^^^^^^^^^
      besonders das. Was fällt dir auf?

      naja, am anfang setzte ich ich die variable popup null, also praktisch leer. dann checke ich ob die nicht null ist != (unlgeich) und ob eine offene instanz von popup existiert. wenn eines der beiden zutrifft macht es popup.closes().

      oder verstehe ich das falsch!?

      Zu diesem Konstrukt schrieb ich bereits vorhin etwas, nimm es dir zu Herzen.

      <a href="javascript:ImageWindow('bild.gif','Titel des Bildes',640,480);"

      keien ahnung was du meinst: schreib es och bitte einfach mal auf. DANKE!!!

      Meinst du, es geht dann alles, so wie ich es haben möchte?!

      Simon

      1. Hallo Simon,

        naja, am anfang setzte ich ich die variable popup null

        und überschreibst somit die Vorhandene. Es kann somit das Popup ja gar nicht
        mehr geschlossen werden.

        wenn eines der beiden zutrifft

        Auch falsch. && bedeutet "und" nicht "oder" (-> ||). Siehe
        http://selfhtml.teamone.de/javascript/sprache/operatoren.htm#logisch

        <a href="javascript:ImageWindow('bild.gif','Titel des Bildes',640,480);"

        keien ahnung was du meinst: schreib es och bitte einfach mal auf.

        Ich schrieb ja

        1. javascript: gehört da net hin (-> </archiv/>)
        2. das ganze soll in den entsprechenden event-handler.

        Kombiniere:
        (ich spar mir die Erklärung und verweise auf
        http://home.t-online.de/home/dj5nu/js-popup.html) ;)

        Meinst du, es geht dann alles, so wie ich es haben möchte?!

        Bestimmt. Aber auch nur so lange, wie JS aktivert ist :)

        Grüße
          David

        --
        >>Nobody will ever need more than 640k RAM!<<
        1981 Bill Gates
        1. Hallo!

          naja, am anfang setzte ich ich die variable popup null
          und überschreibst somit die Vorhandene. Es kann somit das Popup ja gar nicht
          mehr geschlossen werden.

          war mir nicht bewusst - stimmt wo du es jetzt erwähnst. wenn die null (also leer) ist, kann er nicht mehr checken ob die false oder true ist. klar!!

          <a href="javascript:ImageWindow('bild.gif','Titel des Bildes',640,480);"

          Kombiniere:
          (ich spar mir die Erklärung und verweise auf
          http://home.t-online.de/home/dj5nu/js-popup.html) ;)

          also du meinst direkt im link: <a onclick="ImageWindow(bild.gif','Text des Bildes',50,60)"><img src="thumb.jpg"></a>

          Habe ich jetzt alles richtig verstanden? Wenn ja, werde ich Morgen (eigentlich heute) es mal probieren. DANKE!!!

          Simon

          Meinst du, es geht dann alles, so wie ich es haben möchte?!
          Bestimmt. Aber auch nur so lange, wie JS aktivert ist :)

          Grüße
            David

        2. Hallo David!

          Ja, es geht so mit dem onclick! Danke! Leider funtkioniert das Script aber immer noch nicht!

          Ich muss die Zeile:  if (popup.closed != true) popup.close(); entfernen, dann geht es. Leider wird dann nicht jedes PopUp so groß wie das drinn enthaltende Bild. Dass solte ja mit dem kompletten neu öffnen aber gehen. Da aber das PopUp nicht geschlossen wird, tritt dieser Effekt auf.

          Hast du noch einen Rat für mich?!?

          Simon

          Script:
          -------
          function ImageWindow(theURL,ImgName,xSize,ySize)
          {
           if (popup.closed != true) popup.close();
           var Imgsrc = theURL;
           if (ImgName == '') ImgName = theURL.substring(theURL.lastIndexOf('/')+1,theURL.lastIndexOf('.')).replace(/_/," ");
           popup = window.open(Imgsrc,"Dummy",'width='+xSize+',height='+ySize+',left=200,resizable=no,top=150,location=no,screenX=0,screenY=0,dependent=yes,toolbar=no,status=no,menubar=no,scrollbar=no');   <!-- popup.resizeTo(xSize+10,ySize+29); -->
           popup.document.write('<html><head><title>ImgName</title><link rel="STYLESHEET" type="text/css" href="bilder.css"></head>');
           popup.document.write('<body bgcolor="#000000">');
           popup.document.write('<img src=" '+Imgsrc+'"  alt="" border="0" onClick="self.close()" ');
           popup.document.write('</body></html>');
           popup.focus();
          }

          Aufruf per Link:
          ----------------

          <a href="javascript:ImageWindow('bild.gif','Titel des Bildes',460,400);">Bild</a>

          Danke nochmals!

          Simon

          1. Hallo Simon,

            Hast du noch einen Rat für mich?!?

            So spontan fällt mir nichts ein. (oder doch ;) )
            Sofern du es noch nicht hast, solltest du einmal popup außerhalb des Scriptes
            als Variabel einführen, sprich:
            <script type="text/javascript">
            var popup = null;
            function IageWindow() {
              var Imgsrc = theURL; <-- Was bringt dir das eigentlich?

            und dann mit popup.resizeTo() arbeiten (achtung, funktioniert nicht immer)

            Oder ansonsten auf die sicherlich vorhandene Kombinationsgabe des besuchers
            vertrauen und ihn das Fenster resizen lassen :)

            <a href="javascript:ImageWindow('bild.gif','Titel des Bildes',460,400);">Bild</a>

            Ich denk, du hast das schon geändert? ;)

            Grüße
              David

            --
            >>Nobody will ever need more than 640k RAM!<<
            1981 Bill Gates