Zeromancer: onblur - Nur richtig

Guten Morgen,

vorne weg: Ich stehe auf Kriegsfuß mit Javascript. Mir fehlt einfach das Verständnis für die "Programmierei".

Ich rufe ein Fenster auf, in dem aus einer Galerievorschau (Thumbnails) das Ursprungsbild geladen wird:

  
<a href="01/02_001.html" onclick="fenster(this.href); return false;"><img src="01/02_001_th.jpg" width="86" height="65" alt="Text" title="Text" /></a>  

Dazu nutze ich folgende Funktion:

  
function fenster (v)  
{  
win=window.open(v,'myname',"width=400,height=300,resizable=no,scrollbars=no,toolbar=no,location=no,menubar=no,status=no");}  

Ich suche die Möglichkeit, beim Anwählen eines neuen Bildes das aktuelle Bild und damit auch das aktuelle Fenster zu schließen und sofort ein neues Popup mit dem aktuell ausgewählten Bild zu laden.

  
<p><a href="#" onblur="window.close;"><img src="02_001.jpg" width="400" height="300" alt="Text" title="Text" /></a></p>  

Mein erster Ansatz mit "onblur" im Body-Tag ist nicht valide. Mein zweiter Ansatz mit onblur im a-Element funktioniert nicht. Wahrscheinlich liegt es am fehlenden Fokus. Wer kann mir evtl. mit einem konkreten Beispiel/konkrete Hilfestellung weiter helfen?

Vielen Dank.

Mit freundlichen Grüßen,
André

  1. Hi,

    <p><a href="#"

    Du möchtest hier keinen Link setzen, da Du ja keine fremde Ressource referenzierst.

    onblur="window.close;">

    "window.close" ist eine Referenz auf eine Objektmethode, etwas ähnliches wie eine Speicherstelle - also im Grunde nichts anderes als eine Zahl. Dieser Code ist nicht viel sinniger als onblur="42;". Grund: Die hinter der Referenz stehende Methode wird durch Deinen Code nicht ausgeführt.

    Dass "window" immer das aktuelle Fenster ist, ist Dir klar?

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hallo Cheatah,

      <p><a href="#"
      Du möchtest hier keinen Link setzen, da Du ja keine fremde Ressource referenzierst.

      Nein, möchte ich nicht. Ich möchte nur das Popup schließen. Da "onblur" im Body-Tag nicht valide ist, habe ich "onblur" im a-Element verwendet.

      Dass "window" immer das aktuelle Fenster ist, ist Dir klar?

      Jetzt ja.

      Mit freundlichen Grüßen,
      André

      1. Hi,

        Ich möchte nur das Popup schließen. Da "onblur" im Body-Tag nicht valide ist, habe ich "onblur" im a-Element verwendet.

        bist Du sicher, ob Du eigentlich wirklich "onblur" meinst?

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Hallo Cheatah,

          bist Du sicher, ob Du eigentlich wirklich "onblur" meinst?

          wenn mein Popup das Bild anzeigt, dann hat es doch den Fokus?! Sobald man jetzt ein neues Bild aus der Vorschau anzeigen lassen möchte, verliert das aktuelle Fenster den Fokus (onblur?). Just in diesem Moment soll es sich schließen, da ich ja ein neues Fenster mit neuem Bild öffnen/laden möchte.

          Mit freundlichen Grüßen,
          André

          1. Hallo Zeromancer,

            bist Du sicher, ob Du eigentlich wirklich "onblur" meinst?

            wenn mein Popup das Bild anzeigt, dann hat es doch den Fokus?! Sobald man jetzt ein neues Bild aus der Vorschau anzeigen lassen möchte, verliert das aktuelle Fenster den Fokus (onblur?). Just in diesem Moment soll es sich schließen, da ich ja ein neues Fenster mit neuem Bild öffnen/laden möchte.

            "Nein, das ist nicht ergonomisch."[tm]

            Grüße aus Barsinghausen,
            Fabian

            --
            "It's easier not to be wise" - < http://www.fabian-transchel.de/kultur/philosophie/ialone/>
          2. Hi,

            wenn mein Popup das Bild anzeigt, dann hat es doch den Fokus?!

            ja.

            Sobald man jetzt ein neues Bild aus der Vorschau anzeigen lassen möchte, verliert das aktuelle Fenster den Fokus (onblur?).

            Ja.

            Just in diesem Moment soll es sich schließen,

            Nein. Es verliert den Fokus auch in anderen Momenten.

            da ich ja ein neues Fenster mit neuem Bild öffnen/laden möchte.

            Wann genau möchtest Du dies tun?

            Cheatah

            --
            X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
            X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
            1. Hallo Cheatah,

              Wann genau möchtest Du dies tun?

              ich versuche jetzt mal meine geplanten Schritte zu definieren. ;-)

              1. User klickt auf den Link <a href=bild1.html onclick="fenster(this.href); return false"><img src=thumbnail1.jpg height="65" width="87" alt="Bild" /></a>

              2. Funktion fenster wird aufgerufen, Popup erscheint links oben auf dem Bildschirm, Bild wird geladen. Das Popup erscheint im Vordergrund (Fokus), die Seite, von der das Popup angefordert wurde verschwindet in den Hintergrund, ist aber aufgrund seiner Größe noch sichtbar. Die weiteren Links sind auch sichtbar.

              3. Ich klicke auf einen zweiten Link <a href=bild2.html onclick="fenster(this.href); return false"><img src=thumbnail2.jpg height="65" width="87" alt="Bild" /></a> . Damit tritt das ursprüngliche Fenster wieder in den Vordergrund. Das Popup mit dem Bild verliert den Fokus und soll sich schließen. Nach dem Klick auf den Link öffnet sich ein neues Popup, das nun Bild 2 enthält.

              Hintergrund: Der User muss das Fenster mit dem Bild1 nicht schließen. Es schließt sich automatisch, sobald das Bild2 angefordert wird.

              Es kann doch nicht so schwierig sein der Funktion

                
              function fenster (v){  
              win=window.open(v,'myname',"width=400,height=300,resizable=no,scrollbars=no,toolbar=no,location=no,menubar=no,status=no");}  
              
              

              zuzufügen, dass das durch diese Funktion geöffnete Fenster beim Verlust des Fokus (ich gehe jetzt einfach mal davon aus, dass es den Fokus verliert, wenn es in den Hintergrund tritt) sich automatisch schließt.

              Mit freundlichen Grüßen,
              André

              1. Hi,

                Wann genau möchtest Du dies tun?
                ich versuche jetzt mal meine geplanten Schritte zu definieren. ;-)

                aber erst mal fachlich, nicht technisch.

                1. Ich klicke auf einen zweiten Link <a href=bild2.html onclick="fenster(this.href); return false"><img src=thumbnail2.jpg height="65" width="87" alt="Bild" /></a> . Damit tritt das ursprüngliche Fenster wieder in den Vordergrund. Das Popup mit dem Bild verliert den Fokus

                Bis hierhin okay (vom HTML-Code abgesehen).

                und soll sich schließen.

                Falsch. Zumindest ohne eine weitere Begründung.

                Nach dem Klick auf den Link öffnet sich ein neues Popup, das nun Bild 2 enthält.

                Nein. Es soll ein Fenster im Vordergrund stehen, welches das Bild 2 enthält. Es ist Dir völlig egal, ob es sich um das bisherige oder um ein neues Fenster handelt.

                Es kann doch nicht so schwierig sein der Funktion [...]
                zuzufügen, dass das durch diese Funktion geöffnete Fenster beim Verlust des Fokus (ich gehe jetzt einfach mal davon aus, dass es den Fokus verliert, wenn es in den Hintergrund tritt) sich automatisch schließt.

                Es verliert den Fokus, wenn es in den Hintergrund tritt. Aber weder ist der Fokusverlust das entscheidende Ereignis, noch willst Du das Fenster schließen. Beschreibe _fachlich_, was Du möchtest - daraus ergibt sich dann der Moment (das Ereignis), zu dem etwas zu tun ist, und auch was das "etwas" eigentlich ist. Ich prophezeihe, dass am Ende nirgendwo mehr ein "blur" vorkommen wird; es sei denn, Du benennst ein Bild so :-)

                Cheatah

                --
                X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
                X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
                X-Will-Answer-Email: No
                X-Please-Search-Archive-First: Absolutely Yes
                1. Hallo Cheatah,

                  vielen Dank für die Geduld.

                  1. Ich klicke auf einen zweiten Link <a href=bild2.html onclick="fenster(this.href); return false"><img src=thumbnail2.jpg height="65" width="87" alt="Bild" /></a> . Damit tritt das ursprüngliche Fenster wieder in den Vordergrund. Das Popup mit dem Bild verliert den Fokus

                  Bis hierhin okay (vom HTML-Code abgesehen).

                  okay: <a href="bild2.html" onclick="fenster(this.href); return false;"><img src=thumbnail2.jpg height="65" width="87" alt="Bild" /></a>

                  Besser?

                  Nein. Es soll ein Fenster im Vordergrund stehen, welches das Bild 2 enthält. Es ist Dir völlig egal, ob es sich um das bisherige oder um ein neues Fenster handelt.

                  theoretisch sage ich dem neuen Fenster, dass es beim Aufruf den Fokus kriegen soll:

                    
                  function fenster (v)  
                  {  
                  win=window.open(v,'myname',"width=400,height=300,resizable=no,scrollbars=no,toolbar=no,location=no,menubar=no,status=no");  
                  win.focus();  
                  }  
                  
                  

                  Ein Probelauf im IE 6.0 lässt das Popup tatsächlich in den Vordergrund treten. Andere Browser habe ich grad nicht da. Bleibt noch das Schließen des Fensters, wenn alle Bilder angesehen wurden. Aber da muss der Benutzer wohl selbst schließen, da das Skript ja nicht "wissen" kann, wann der User nichts mehr ansehen möchte?!

                  Ich prophezeihe, dass am Ende nirgendwo mehr ein "blur" vorkommen wird; es sei denn, Du benennst ein Bild so :-)

                  Okay.

                  Mit freundlichen Grüßen,
                  André

                  1. Hi,

                    okay: <a [...]><img src=thumbnail2.jpg [...] /></a>
                    Besser?

                    etwas, aber immer noch nicht ganz ;-)

                    Ein Probelauf im IE 6.0 lässt das Popup tatsächlich in den Vordergrund treten. Andere Browser habe ich grad nicht da. Bleibt noch das Schließen des Fensters, wenn alle Bilder angesehen wurden. Aber da muss der Benutzer wohl selbst schließen, da das Skript ja nicht "wissen" kann, wann der User nichts mehr ansehen möchte?!

                    Jau, richtig. Ich rate auch davon ab, das Fensterschließen z.B. onunload durchzuführen - nur der User kann entscheiden, ob er das Fenster nicht mehr haben möchte. Es ist schon schlimm genug, dass Du ihn nicht entscheiden lässt, ob er es _überhaupt_ öffnen lassen will.

                    Cheatah

                    --
                    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
                    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
                    X-Will-Answer-Email: No
                    X-Please-Search-Archive-First: Absolutely Yes
  2. Hallo André,

    Ich suche die Möglichkeit, beim Anwählen eines neuen Bildes das aktuelle Bild und damit auch das aktuelle Fenster zu schließen und sofort ein neues Popup mit dem aktuell ausgewählten Bild zu laden.

    warum denn das Fenster erst schließen? Solange das Fenster 'myname' existiert wird immer das gleiche Fenster verwendet.
    Wenn du -aus welchen Gründen auch immer- das Fenster vorher schließen möchtest, merke dir die von der Methode open gelieferte Referenz auf das Fenster in einer globalen Variable und prüfe bei einem erneuten Aufruf auf Vorhandensein und !win.closed. Wenn zutreffend kannst du dann mit win.close() das Fenster schließen.

    Grüße,

    Jochen

    --
    Heute schon gescribbelt?
    Scribbleboard
    1. Hallo Jochen,

      warum denn das Fenster erst schließen? Solange das Fenster 'myname' existiert wird immer das gleiche Fenster verwendet.

      vom Prinzip her schon. Es ist mir wichtig, dass der User das aktuelle Fenster nicht selbst schließen muss, sondern einfach auf das nächste Vorschaubild klicken kann und sich das nächste Bild öffnet. Wobei hier das Popup nicht nur unten in der Statusleiste erscheinen soll, sondern auch den Fokus kriegen muss.

      Wenn du -aus welchen Gründen auch immer- das Fenster vorher schließen möchtest, merke dir die von der Methode open gelieferte Referenz auf das Fenster in einer globalen Variable und prüfe bei einem erneuten Aufruf auf Vorhandensein und !win.closed. Wenn zutreffend kannst du dann mit win.close() das Fenster schließen.

      Sorry, siehe Augangsposting: Bahnhof! ;-)

      Mit freundlichen Grüßen,
      André

      1. Hallo André

        vom Prinzip her schon. Es ist mir wichtig, dass der User das aktuelle Fenster nicht selbst schließen muss

        muss er ja nicht. Es wird das bereits vorhande Fenster verwendet.

        sondern einfach auf das nächste Vorschaubild klicken kann und sich das nächste Bild öffnet.

        tut es ja

        Wobei hier das Popup nicht nur unten in der Statusleiste erscheinen soll, sondern auch den Fokus kriegen muss.

        win.focus();

        Sorry, siehe Augangsposting: Bahnhof! ;-)

          
        var win;  
        function fenster (v)  
          {  
          if(win && !win.closed)  
            win.close();  
          
          win=window.open(v,'myname'...  
        
        

        Wobei ich das aber (siehe letztes Posting) immer noch für überflüssiges Fensterln erachte.

        Grüße,

        Jochen

        --
        Heute schon gescribbelt?
        Scribbleboard
        1. Hallo, Jochen!

          sondern einfach auf das nächste Vorschaubild klicken kann und sich das nächste Bild öffnet.

          tut es ja

          Wird Zeromancers Problem nicht hauptsächlich sein, dass das
          alte Fenster die falsche Größe für das neue Galeriebild hat?

          Vermutlich will er darum ein neues Fenster gezielt mit den
          richtigen Eigenschaften öffnen. Oder nicht?

          Jens

          1. Hallo Jens,

            Wird Zeromancers Problem nicht hauptsächlich sein, dass das
            alte Fenster die falsche Größe für das neue Galeriebild hat?

            das Problem bin ich umgangen, indem ich allen Bildern die Größe von 400x300 Pixeln "verpasst" habe. Ist auch besser wegen der Ladezeiten und für meine Belange völlig ausreichend.

            Mit freundlichen Grüßen,
            André

  3. Hi Zeromancer!

    Mir fehlt einfach das Verständnis für die "Programmierei".

    Wenn schon, dann _das_ "Programmierei". ;-)

    MfG H☼psel

    --
    "It's amazing I won. I was running against peace, prosperity, and incumbency."
    George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
    Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
    1. Hallo Hopsel,

      Mir fehlt einfach das Verständnis für die "Programmierei".
      Wenn schon, dann _das_ "Programmierei". ;-)

      Programmiererei, sorry. ;-)

      Mit freundlichen Grüßen,
      André

      1. Hallo Zeromancer,

        Mir fehlt einfach das Verständnis für die "Programmierei".
        Wenn schon, dann _das_ "Programmierei". ;-)

        Programmiererei, sorry. ;-)

        Mhh? Kann man die jetzt schon ausbrüten? Ich dachte man müsste sie behutsam mit Assembler füttern, bevor man die ersten  Brocken C an sie heran trägt, ehe sie von sich aus die ersten Codes sprechen: Erstaunlicherweise die intelligenteren "Linux" statt "Mami(crosoft)" ;-)

        Grüße aus Barsinghausen,
        Fabian

        --
        "It's easier not to be wise" - < http://www.fabian-transchel.de/kultur/philosophie/ialone/>
        1. Hallo Fabian,

          Mhh? Kann man die jetzt schon ausbrüten?

          aha! ;-)

          Mit freundlichen Grüßen,
          André

  4. Tag Zeromancer.

    Ich suche die Möglichkeit, beim Anwählen eines neuen Bildes das aktuelle Bild und damit auch das aktuelle Fenster zu schließen und sofort ein neues Popup mit dem aktuell ausgewählten Bild zu laden.

    Wenn du als Objektname stets den gleichen verwendest, überschreibt das neu erzeugte Fensterobjekt das alte:

    function popper() {  
      var Fensterobjekt = window.open("pfad_zum.html", "Fenstername", features);  
      Fensterobjekt.focus();  
    }
    

    Bei jedem Aufruf von popper() wird ein Fenster geöffnet und die Referenz darauf in der lokalen Variable "Fensterobjekt" gespeichert. Visuell handelt es sich stets um das selbe Popup-Fenster. Für die Größenanpassung steht dir (sofern nicht clientseitig verboten) die Methode resizeTo() zur Verfügung.

    Siechfred

    1. Hallo Siechfred,

      Wenn du als Objektname stets den gleichen verwendest, überschreibt das neu erzeugte Fensterobjekt das alte:

      dagegen ist ja wohl nichts einzuwenden, oder?

      function popper() {

      var Fensterobjekt = window.open("pfad_zum.html", "Fenstername", features);
        Fensterobjekt.focus();
      }

        
      Der Pfad ist i.d.R. niemals gleich, da ich diese Funktion für alle Seiten einsetze und extern einbinde. Dies ist möglich, da ich nur drei Arten von zu ladenden Inhalten habe:  
        
      function fenster1: width=400,height=300 (feste Größe ohne Scrollbalken etc.)  
      function fenster2: width=300,height=400 (feste Größe ohne Scrollbalken etc.)  
      function fenster3: width=500,height=500 (variable Größe mit Scrollbalken etc.)  
        
      
      > Bei jedem Aufruf von popper() wird ein Fenster geöffnet und die Referenz darauf in der lokalen Variable "Fensterobjekt" gespeichert.  
        
      Das klingt verständlich für mich. Danke.  
        
      
      > Für die Größenanpassung steht dir (sofern nicht clientseitig verboten)  
        
      na dann lass ich das mal lieber sein...  
        
      Vielen Dank für die Ausführungen.  
        
      Mit freundlichen Grüßen,  
      André
      
      1. Tag Zeromancer.

        Der Pfad ist i.d.R. niemals gleich, da ich diese Funktion für alle Seiten einsetze und extern einbinde.

        Dann übergib ihn der Funktion als Parameter.

        function fenster1: width=400,height=300 (feste Größe ohne Scrollbalken etc.)
        function fenster2: width=300,height=400 (feste Größe ohne Scrollbalken etc.)
        function fenster3: width=500,height=500 (variable Größe mit Scrollbalken etc.)

        Du könntest die Features in ein Array packen und der Funktion als weiteren Parameter die Nummer des gewünschten Featuresatzes übergeben:

        var features = new Array();  
        features[0] = "width=400,height=300"; // und weitere  
        features[1] = "width=300,height=400"; // und weitere  
        features[2] = "width=500,height=500"; // und weitere  
          
        function popper(res,tit,fn) {  
          var obj = window(res,fn,features[fn]);  
          obj.focus();  
        }
        

        Übrigens, wenn du das Fenster beim Verlassen der Seite schließen willst, sollte dir der Eventhandler onunload kombiniert mit der Methode close weiterhelfen. Allerdings solltest du zuvor die Existenz des Fensterobjektes abfragen, sonst gibt's einen Fehler in der JS-Konsole.

        Siechfred

        1. function popper(res,tit,fn) {

          var obj = window(res,fn,features[fn]);
            obj.focus();
          }

            
          Richtig wäre natürlich  
            
          ~~~javascript
          function popper(res,tit,fn) {  
            var obj = window(res,tit,features[fn]);  
            obj.focus();  
          }
          

          Beispiel:

          popper("pfad/zu/irgendeiner.html", "Irgendwas", 2);

          Siechfred

          1. Hallo Siechfred,

            var features = new Array();
            features[0] = "width=400,height=300,resizable=no,scrollbars=no,toolbar=no,location=no,menubar=no,status=no";
            features[1] = "width=300,height=400,resizable=no,scrollbars=no,toolbar=no,location=no,menubar=no,status=no";
            features[2] = "width=500,height=500,resizable=yes,scrollbars=yes,toolbar=yes,location=yes,menubar=yes,status=yes";

            function popper(res,tit,fn) {
              var obj = window(res,tit,features[fn]);
              obj.focus();
            }

            Beispiel:

            popper("pfad/zu/irgendeiner.html", "Irgendwas", 2);

            <a href="01/02_001.html" onclick="popper(this.href,'tit',0); return false;"><img src=...

            sagt mir

            Error: Line 7 Member not found. Habe ich etwas übersehen?

            Mit freundlichen Grüßen,
            André

            1. Hallo André,

              function popper(res,tit,fn) {
                var obj = window(res,tit,features[fn]);

              var obj = window.open(res,tit,features[fn]);

              obj.focus();
              }

              Grüße
              Andreas

              --
              As Einstein once said during a Thanksgiving food fight, "It's all relatives."
              1. Hallo Andreas,

                var obj = window.open(res,tit,features[fn]);

                hätte ich mittlerweile auch selbst sehen müssen. Vielen Dank für die Hilfe. Nun funktioniert das Skript zu 50%. Was mich noch wundert ist die Tatsache, dass das neue Bild jeweils in einem neuen, weiteren Fenster geöffnet wird.

                  
                var features = new Array();  
                features[0] = "width=400,height=300,resizable=no,scrollbars=no,toolbar=no,location=no,menubar=no,status=no";  
                features[1] = "width=300,height=400,resizable=no,scrollbars=no,toolbar=no,location=no,menubar=no,status=no";  
                features[2] = "width=500,height=500,resizable=yes,scrollbars=yes,toolbar=yes,location=yes,menubar=yes,status=yes";  
                  
                function popper(res,tit,fn) {  
                  var obj = window.open(res,tit,features[fn]);  
                  obj.focus();  
                }  
                
                

                sorgt bei

                  
                <a href="01/02_001.html" onclick="fenster(this.href,'tit',0); return false;"><img src="...  
                
                

                sowie bei

                  
                <a href="01/02_006.html" onclick="fenster(this.href,'tit',1); return false;"><img src="...  
                
                

                für jeweils ein neues Fenster, ohne das andere zu schließen bzw. das gleiche Fenster zu nutzen.

                Hoffe, dass noch jemand die Motivation hat, mit mir die Unstimmigkeit zu diskutieren?! ;-)

                Mit freundlichen Grüßen,
                André

                1. Tag Zeromancer.

                  jeweils ein neues Fenster, ohne das andere zu schließen bzw. das gleiche Fenster zu nutzen.

                  Ähm, da war wohl ein "var" zuviel (siehe Code am Ende des Postings). Ansonsten die obligatorische Frage: welcher Browser und gibt's 'nen Testlink?

                  Übrigens, bevor du dich wunderst, die Features eines einmal offenen Popups kannst du nicht mehr ändern (also z.B. Umschalten zwischen resizable=yes/no), aber ich ging davon aus, dass du das "Design" des einmal offenen Popups nicht ändern möchtest. Sonst müsstest du es in der Tat schließen und wieder öffnen, so wie von Jürgen angedeutet.

                  Ich darf das noch mal kurz ergänzen:

                  function popper(res,tit,fn) {  
                    // schliessen, wenn noch offen  
                    if(typeof obj == 'object' && !obj.closed) obj.close();  
                    obj = window.open(res,tit,features[fn]);  
                    obj.focus();  
                  }
                  

                  Siechfred

                  1. Hallo Siechfred,

                    Ähm, da war wohl ein "var" zuviel (siehe Code am Ende des Postings). Ansonsten die obligatorische Frage: welcher Browser und gibt's 'nen Testlink?

                    okay. Einen Testlink kann ich zur Zeit nicht anbieten. Aber soviel zum Thema:

                    Browser: IE 6.0 unter WinXP Pro
                    Ziel: Funktion, die beim Klick auf ein Thumbnail die Vergrößerung in einem Popup erzeugt/größeres Bild in einem Popup anzeigt.

                      
                    var features = new Array();  
                    features[0] = "width=400,height=300,resizable=no,scrollbars=no,toolbar=no,location=no,menubar=no,status=no";  
                    features[1] = "width=300,height=400,resizable=no,scrollbars=no,toolbar=no,location=no,menubar=no,status=no";  
                    features[2] = "width=500,height=500,resizable=yes,scrollbars=yes,toolbar=yes,location=yes,menubar=yes,status=yes";  
                      
                    function popper(res,tit,fn) {  
                      // schliessen, wenn noch offen  
                      if(typeof obj == 'object' && !obj.closed) obj.close();  
                      obj = window.open(res,tit,features[fn]);  
                      obj.focus();  
                    }  
                    
                    
                      
                    <p>  
                    <a href="01/02_001.html" onclick="popper(this.href,'tit',0); return false;"><img src="01/02_001_th.jpg" width="86" height="65" alt="Bild" /></a>  
                    </p>  
                      
                    <p>  
                    <a href="01/02_006.html" onclick="popper(this.href,'tit',1); return false;"><img src="01/02_006_th.jpg" width="86" height="65" alt="Bild" /></a>  
                    </p>  
                    
                    

                    Die Änderung der Eigenschaften funktioniert nun prima. Egal, ob es sich um ein hoch- oder querformatiges Bild handelt, entsprechend der Featurenummer wird das Format gewechselt.

                    Übrigens, bevor du dich wunderst, die Features eines einmal offenen Popups kannst du nicht mehr ändern

                    In meinem Fall ist dies nebensächlich, da sich das Fenster beim anklicken eines neuen Verweises schließt und mit den neuen Eigenschaften öffnet.

                    Das letzte Bild, bevor man die Seite verlässt, muss man halt manuell schließen oder per onunload(?) schließen.

                    Mit freundlichen Grüßen,
                    André

                    1. Tag Zeromancer.

                      Das letzte Bild, bevor man die Seite verlässt, muss man halt manuell schließen oder per onunload(?) schließen.

                      Per onunload halte ich für die elegantere Variante.

                      Siechfred

                      1. Hallo Siechfred,

                        Per onunload halte ich für die elegantere Variante.

                        "unonload" würde sich ja dann auf den "opener" beziehen, da ich ja diese Seite, von der das Popup geöffnet wurde, verlasse?!

                          
                        function popper(res,tit,fn) {  
                          // schliessen, wenn noch offen  
                          if(typeof obj == 'object' && !obj.closed) obj.close();  
                          obj = window.open(res,tit,features[fn]);  
                          obj.focus();  
                        }  
                        
                        

                        Das heißt, dass ich in die Funktion noch einen Teil einbringen muss, der das erreicht?! Oder in den Body-Tag jeder Seite einfügen

                          
                        <body onunload="obj.close();">  
                        
                        

                        Mit freundlichen Grüßen,
                        André

                        1. Hallo Zeromancer,

                          Das heißt, dass ich in die Funktion noch einen Teil einbringen muss, der das erreicht?! Oder in den Body-Tag jeder Seite einfügen

                          <body onunload="obj.close();">

                            
                          im IE funktioniert es so. Muss ich zu Hause mal auf'm FF testen.  
                            
                          Mit freundlichen Grüßen,  
                          André
                          
                          1. Das heißt, dass ich in die Funktion noch einen Teil einbringen muss, der das erreicht?! Oder in den Body-Tag jeder Seite einfügen

                            <body onunload="obj.close();">

                            
                            >   
                            > im IE funktioniert es so. Muss ich zu Hause mal auf'm FF testen.  
                              
                            Du solltest da noch einen Test einbauen, auch wenn in dem Falle die Fehlermeldung nicht mehr weiter stören würde.  
                              
                            ~~~html
                              
                            <body onunload="if(obj && !obj.closed) obj.close();">  
                            
                            

                            Struppi.

                            1. Hallo Struppi,

                              Du solltest da noch einen Test einbauen, auch wenn in dem Falle die Fehlermeldung nicht mehr weiter stören würde.

                              das habe ich getan und siehe, die Fehlermeldung bleibt auch endlich aus. Herzlichen Dank.

                              Mit freundlichen Grüßen,
                              André

                        2. Tag Zeromancer.

                          Per onunload halte ich für die elegantere Variante.
                          "unonload" würde sich ja dann auf den "opener" beziehen, da ich ja diese Seite, von der das Popup geöffnet wurde, verlasse?!

                          Das geht m.W.n. nicht.

                          Das heißt, dass ich in die Funktion noch einen Teil einbringen muss, der das erreicht?! Oder in den Body-Tag jeder Seite einfügen

                          <body onunload="obj.close();">

                            
                          Ja, so würde ich es machen, allerdings noch um eine Existenzprüfung für obj erweitert, damit es keinen JS-Fehler gibt, falls das Popup durch den User bereits geschlossen wurde.  
                            
                          Siechfred
                          
                          -- 
                          [Codeschnipsel gefällig?](http://sniplets.anaboe.net) || [Wieder Online: Existenzgründer-FAQ](http://www.steuerwerkstatt.de/existenzgruendung.php)
                          
                          1. Hallo Siechfred,

                            Ja, so würde ich es machen, allerdings noch um eine Existenzprüfung für obj erweitert, damit es keinen JS-Fehler gibt, falls das Popup durch den User bereits geschlossen wurde.

                            habe ich nach Struppis Vorbild gemacht. Es funktioniert prima. Nun habe ich eine hoffentlich fehlerfreie Funktion. Hoffen wir das Beste...

                            Herzlichen Dank für die Unterstützung.

                            Mit freundlichen Grüßen,
                            André

  5. Hallo zusammen,

      
    <body onunload="if(obj && !obj.closed) obj.close();">  
    
    

    liefert mir im IE einen Run Time Error Line 18: 'obj' is undefined. Verstehe ich nicht!

      
    function popper(res,tit,fn) {  
      // schliessen, wenn noch offen  
      if(typeof obj == 'object' && !obj.closed) obj.close();  
      obj = window.open(res,tit,features[fn]);  
      obj.focus();  
    }  
    
    

    Mit freundlichen Grüßen,
    André

    1. Tag Zeromancer.

      <body onunload="if(obj && !obj.closed) obj.close();">

      
      > liefert mir im IE einen Run Time Error Line 18: 'obj' is undefined. Verstehe ich nicht!  
        
      Die Crux mit der Existenzprüfung :-)  
        
      
      >   if(typeof obj == 'object' && !obj.closed) obj.close();  
        
      Hier steht die Lösung.  
        
      Siechfred
      
      -- 
      [Codeschnipsel gefällig?](http://sniplets.anaboe.net) || [Wieder Online: Existenzgründer-FAQ](http://www.steuerwerkstatt.de/existenzgruendung.php)
      
      1. Hallo Siechfred,

        Die Crux mit der Existenzprüfung :-)

        man, man, man, wenn man(n)/frau euch nicht hätte?! Vielen Dank und schönen Feierabend.

        Mit freundlichen Grüßen,
        André