Dominic: Javascript popup öffnen und schließen mit dem selben link

Hallo,

ich hab ein kleines Problem, dass mich seit gestern in den Wahnsinn treibt. Ich will über ein onClick auf einen Link ein Popup öffnen. Soweit kein Problem, wenn man aber nochmals auf den selben Link klickt, soll sich das Popup, wenn es noch geöffnet ist, schließen, wenn es schon geschloßen wurde wieder öffnen. Kann mir jemand helfen? Vielen Dank im Vorraus!

lg

Dominic

  1. Tja, wie immer sind auch heute keine Hellseher da.

    Was hast du denn schon probiert?

    Wie wärs mit ein wenig Coding oder einem Link?

    Nils

    1. Tja, wie immer sind auch heute keine Hellseher da.

      Was hast du denn schon probiert?

      Wie wärs mit ein wenig Coding oder einem Link?

      Nils

      Vorweg muss ich zugeben das ich von Javascript nur recht oberflächlich Ahnung hab, ich bin eher in PHP, Perl etc. bewandert. Mein erster Gedanke war einfach einen Variablen Wert zu Verändern. Da Javascript ja aber die angewohnheit hat bei jedem neuen Funktionsaufruf so zu tun als wäre die Variable gerade frisch deklariert worden. Was ich brauche ist prakrisch eine Funktion die beim aufruf prüft ob ein popup offen ist, es schließt falls ja, es aufmacht falls nein. auch mit abfragen dieser art hab ichs versucht:

      function OpenPopUp() {
      if (popup && !popup.closed) popup.close();
      if (!popup || popup.closed) popup = window.open('music.html','music','toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no,width=85,height=51,fullscreen=no');
      }

      alles ohne Erfolg. Bin für jede Idee oder Hilfe dankbar

      1. Es hilft, erstmal zu fragen, ob das Objekt/Fenster "popUp" überhaupt
        existiert. Somit sieht der Code folgendermaßen aus:

        [code lang=javascript]
        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
        <html>
        <head>
        <title>openOrClosePopUp</title>
        <script type="text/javascript">
        <!--
          function openOrClosePopUp () {
           if (typeof popUp=="undefined" || popUp.closed == true) {
            popUp = window.open("http://example.org","popUp");
           } else {
            popUp.close();
           }
          }
        //-->
        </script>
        </head>
        <body>

        <a href="javascript:openOrClosePopUp()">PopUp</a>

        </body>
        </html>
        [code]

        1. DANKE!

          Funktioniert :o)

        2. Es hilft, erstmal zu fragen, ob das Objekt/Fenster "popUp" überhaupt
          existiert. Somit sieht der Code folgendermaßen aus:

          [code lang=javascript]
          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
          <html>
          <head>
          <title>openOrClosePopUp</title>
          <script type="text/javascript">
          <!--
            function openOrClosePopUp () {
             if (typeof popUp=="undefined" || popUp.closed == true) {
              popUp = window.open("http://example.org","popUp");
             } else {
              popUp.close();
             }
            }
          //-->
          </script>
          </head>
          <body>

          <a href="javascript:openOrClosePopUp()">PopUp</a>

          </body>
          </html>
          [code]

          Nochmal vielen Dank für die Hilfe, jetzt stellt sich mir ein neues Problem dar. Das popup soll auch von anderen Seiten aus schließbar (und zu öffnen) sein. In dem Popup wird ein Sound abgespielt. Wenn ich jetzt die Seite auf der ich es geöffnet habe verlasse, hab ich auf den anderen Seiten auch wieder den selben Link. Klickt man allerdings darauf und das popup ist noch geöffnet, wird der Inhalt des popups einfach nur neu geladem statt das sich das popup schließt. Jemand eine Idee? Danke!

          1. hi,

            Wenn ich jetzt die Seite auf der ich es geöffnet habe verlasse, hab ich auf den anderen Seiten auch wieder den selben Link. Klickt man allerdings darauf

            ... ist dort die javascript-variable popUp natürlich nicht mehr vorhanden, folglich ergibt die abfrage, dass kein solches popup mehr existieren würde.

            aber auch von dort aus sollte sich das popup ansprechen bzw. seine existenz überprüfen lassen, über window["fenstername"] (wobei fenstername beim gewählten beispiel ebenfalls popUp lautete, etwas unglücklich).

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }
            1. aber auch von dort aus sollte sich das popup ansprechen bzw. seine existenz überprüfen lassen, über window["fenstername"] (wobei fenstername beim gewählten beispiel ebenfalls popUp lautete, etwas unglücklich).

              Nö, das geht nicht, da es keine popup-Collection oder sowas gibt. Du musst die Referenz neu erzeugen mit window.open()

              Struppi.

          2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
            <html>
            <head>
            <title>openOrClosePopUp</title>
            <script type="text/javascript">
            <!--
              function openOrClosePopUp () {
               if (typeof popUp=="undefined" || popUp.closed == true) {
                popUp = window.open("http://example.org","popUp");
               } else {
                popUp.close();
               }
              }
            //-->
            </script>

            Das typeof liesse sich sparen, wenn man einfach popup Global deklariert:
            [code lang=javascript]
            <script type="text/javascript">
            var popup;
            function openOrClosePopUp ()
            {
              if (popUp && !popUp.closed) {
                popUp.close();
              }
              else
              {
                 popUp = window.open("http://example.org","popUp");
              }
            }
            </script>

              
              
            
            > ...Das popup soll auch von anderen Seiten aus schließbar (und zu öffnen) sein. .... Jemand eine Idee? Danke!  
              
            Da hast du nur eine Chance, in dem du dir irgendwo merkst, dass das Fenster evtl. schon geöffnet ist.  
              
            Es bietet sich window.name an wenn du kein Frameset benutzt.  
              
            ~~~javascript
              
            <script type="text/javascript">  
            function openOrClosePopUp ()  
            {  
            if(window.name == 'popupOffen')  
            {  
               window.open("","popUp").close();  
               window.name = "";  
            }  
            else  
            {  
               window.open("http://example.org","popUp");  
               window.name = "popupOffen";  
            }  
            }  
            </script>  
            
            

            Struppi.

            1. Super, Danke, jetzt läuft alles wie es soll :o)

  2. Hi!

    Zuerst einmal muss die im PopUp dargestellte Datei auf derselben Domain liegen wie die aufrufende Seite.

    Dann solltest du dir die closed-Eigenschaft des PopUps anschauen.

    Wenn du dann noch fragen hast - immer gerne.

    Gruß

    Martin