carrie: Fenster schliessen - Warum funktionierts nicht?

Hallo, ich habe die folgende htm.-Datei, die sich in einem Javascript-Fenster öffnet. Wenn ich auf "fenster schliessen" klicke, schliesst sich das Fenster nicht sondern es erscheint im Fenster die Meldung "function fenster_schliessen() { self.close(); }" Hat jemand ne Ahnung wo der Wurm begraben liegt.
<html>
<head>
<title></title>
<script type="text/javascript">
function fenster_schliessen(){
self.close();
}
</script>
</head><body><a href="javascript:fenster_schliessen">fenster schliessen</a></body></html>

Das Javascript-Fenster öffne ich mit der Funktion
<script type="text/javascript">
function fenster_oeffnen(){
F1 = window.open("platzhalter.htm", "Fenster1", "width=300,height=400,left=0,top=0,toolbar=no,location=no,menubar=no,scrollbars=no,status=no");
F1.focus();
}
</script>

Ich habe auch schon F1.close(); und Fenster1.close(); ausprobiert, aber das funktioniert auch nicht.

  1. Hallo carrie,

    ich bin zwar kein Javascript-Guru, aber wenn ich irgendwo ein "Fenster schließen"-Dingens anbieten möchte, dann brauche ich dazu keine Funktionsdefinition im <script>-Bereich, sondern mache ganz einfach:
    <a href="javascript:window.close(0)">Fenster schließen</a>
    Bisher hat's da noch keine Probleme gegeben.

    Gruß -
    Sebastian

    PS: Ohne Gewähr und Richtigkeitsanspruch...

  2. Hallo,

    <a href="javascript:fenster_schliessen">fenster schliessen</a>

    <a href="javascript:fenster_schliessen()">fenster schliessen</a>

    muesst gehn.

    Ciao,
    Joerg

  3. Hallo,

    ich frage einfach mal mittendrin. Man(n)/frau möge mir verzeihen.

    Ich öffne für meine Bildergalerien mittels

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

    und

      
    <a href="datei.html" onclick="fenster(this.href); return false;" title="Zum Beitrag">  
    
    

    meine Fenster.

    Die Fenster selbst möchte ich aber nicht durch self.close schließen lassen, sondern wenn der Benutzer das nächste Bild klickt. Dazu nutze ich in den Popups

      
    <body onblur="window.close()" id="pop">  
    <p><img src="bild.jpg" width="400" height="300" alt="Text" title="Text"></p>  
    </body>  
    </html>  
    
    

    Nur leider ist das "onblur"-Attribut im body nicht erlaubt. Wie kann ich dennoch zum angestrebten Ziel kommen und die Validität wahren?

    Mit freundlichen Grüßen

    André

    1. Hallo,

      Die Fenster selbst möchte ich aber nicht durch self.close schließen lassen, sondern wenn der Benutzer das nächste Bild klickt. Dazu nutze ich in den Popups

      Wenn Du es unbedingt schließen lassen willst, dann frag mit einer if Bedinung vorher ab, ob das Fenster bereits offen ist, nachdem Du auf ein Bild in Deiner Galerie geklickt hast.

      if (window.myname) {
          myname.close();
      }

      Wenn Du das jedoch nur machen möchtest, weil Deine Bilder untewrschiedliche Größen haben und Du somit versuchen willst, die Fenstergröße neu zu bestimmen --> schließen und sofort wieder öffnen (mit neuen Maßen), solltest Du lieber:

      window.myname.resizeTo(100, 200);

      Mit freundlichem Gruß
      Micha

      1. Hallo Micha,

        Wenn Du das jedoch nur machen möchtest, weil Deine Bilder untewrschiedliche Größen haben und Du somit versuchen willst, die Fenstergröße neu zu bestimmen

        ich achte i.d.R. darauf, dass alle Bilder eine Größe von 400x300 haben. Es geht nur darum einen Schritt für den User zu sparen, indem er einfach das neue Bild aufruft, ohne das alte schließen zu müssen.

        Mit freundlichen Grüßen

        André

        1. Hallo André,

          Es geht nur darum einen Schritt für den User zu sparen, indem er einfach das neue Bild aufruft, ohne das alte schließen zu müssen.

          Na dann reicht es ja berewits aus, zu Fragen, ob das Fenster offen ist, wenn offen, dann nimm es, wenn es (noch) nicht offen ist, dann schließe es...

          Mit freundlichem Gruß
          Micha

          1. hi,

            Na dann reicht es ja berewits aus, zu Fragen, ob das Fenster offen ist, wenn offen, dann nimm es

            dann könnte es sich ggf. noch anbieten, ihm auch wieder den fokus zu geben - sonst wundert sich der nutzer, dass "nichts passiert" wenn er einen weiteren solchen link anklickt.

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }
    2. <body onblur="window.close()" id="pop">
      <p><img src="bild.jpg" width="400" height="300" alt="Text" title="Text"></p>
      </body>
      </html>

      
      >   
      > Nur leider ist das "onblur"-Attribut im body nicht erlaubt. Wie kann ich dennoch zum angestrebten Ziel kommen und die Validität wahren?  
        
      Wie wär's mit:  
      ~~~javascript
        
      window.onblur= function() { window.close();};  
      
      

      Struppi.

      1. Hallo Struppi,

        Wie wär's mit:

          
        
        > window.onblur= function() { window.close();};  
        
        

        wenn das so einfach geht?! Ich habe von JS nur gewisse Grundkenntnisse und bisher auch nicht die Notwendigkeit gesehen, mich in die Materie einzuarbeiten , da ich JS ausser für Popups gar nicht verwenden will.

        Mit freundlichen Grüßen

        André

        1. Wie wär's mit:

          window.onblur= function() { window.close();};

          
          >   
          > wenn das so einfach geht?! Ich habe von JS nur gewisse Grundkenntnisse und bisher auch nicht die Notwendigkeit gesehen, mich in die Materie einzuarbeiten , da ich JS ausser für Popups gar nicht verwenden will.  
            
          Joh, das geht so einfach.  
            
          Struppi.
          
          -- 
          [Javascript ist toll](http://javascript.jstruebig.de/)
          
          1. Hallo,

              
            
            > > > window.onblur= function() { window.close();};  
            
            

            Joh, das geht so einfach.

            Wäre dies der richtige Ansatz?

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

            Mit freundlichen Grüßen

            André

            1. Wäre dies der richtige Ansatz?

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

                
              ich weiß nicht, welches Fenster sol sich denn onblur schließen, so sollte es das Haupfenster (mit Rückfrage)  
                
              Wenn du das popup schliessen möchtest ist das nicht ganz so einfach, da du leider nicht:  
              win=window.open(...);  
              win.onblur= function() { window.close();};  
                
              schreiben kannst, da das aufrufen mit URL diese Angabe quasi wieder überschreibt.  
                
              Entweder du baust das direkt in den HTML Code der popupseite ein oder du versuchst zu erraten, wann die Seite geladen wurde und fügst dann den Event hinzu.  
                
              Struppi.
              
              -- 
              [Javascript ist toll](http://javascript.jstruebig.de/)
              
        2. hi,

          Ich habe von JS nur gewisse Grundkenntnisse und bisher auch nicht die Notwendigkeit gesehen, mich in die Materie einzuarbeiten , da ich JS ausser für Popups gar nicht verwenden will.

          schade, man kann doch so viel sinnvolles mit JS machen.
          nur popups gehören mit zum größten unfug, der sich damit verbrechen lässt ...

          gruß,
          wahsaga

          --
          /voodoo.css:
          #GeorgeWBush { position:absolute; bottom:-6ft; }
          1. Hallo,

            schade, man kann doch so viel sinnvolles mit JS machen.
            nur popups gehören mit zum größten unfug, der sich damit verbrechen lässt

            kannst du mir mal Beispiele geben? Das Problem an der Sache ist, dass man JS abschalten kann und damit auch die Funktionalität verloren geht. So kann ich z.B. ohne JS kein Online-Banking betreiben. Mal ganz davon abgesehen, dass die Online-Banking-Seiten der Volks- und Raiffeisenbanken nicht 100% mit Firefox zusammen arbeiten wollen. Die sind mächtig auf IE getrimmt.

            Mit freundlichen Grüßen

            André

            1. hi,

              kannst du mir mal Beispiele geben? Das Problem an der Sache ist, dass man JS abschalten kann und damit auch die Funktionalität verloren geht.

              JS ist gut für das, was dem user einen mehrwert an komfort/unterhaltung/wasauchimmer bietet - ohne den die funktionalität der seite aber immer noch genauso garantiert werden könnte.
              nimm als beispiel nur eine formularüberprüfung - klar muss die serverseitig auf jeden fall (noch mal) erfolgen. aber warum dem benutzer nicht das abschicken ersparen und ihn per JS auf fehler, die zur ablehnung der daten führen werden, hinweisen?
              oder in einem warenkorb, berechnung einer endsumme aus mengen und preisen schon "on-the-fly".
              oder oder oder ...

              So kann ich z.B. ohne JS kein Online-Banking betreiben. Mal ganz davon abgesehen, dass die Online-Banking-Seiten der Volks- und Raiffeisenbanken nicht 100% mit Firefox zusammen arbeiten wollen. Die sind mächtig auf IE getrimmt.

              ja, gerade im bereich onlinebanking ist es manchmal wirklich haarsträubend. wenn sowas keinen sicherheitsrelevanten bereich darstellt - was denn dann bitte?

              gruß,
              wahsaga

              --
              /voodoo.css:
              #GeorgeWBush { position:absolute; bottom:-6ft; }