Raffi: window.close von anderem Frame als window.open

Hallo Leute

Ich habe folgendes Problem.
Ich habe eine seite mit 3 Frames.

Durch klicken eines Buttons im untersten Frame wird folgender Script ausgeführt:

<script language="JavaScript" type="text/JavaScript">
function popup() {

var nPosX = (top.screen.availWidth/4) - 21;
 var nPosY = (top.screen.availHeight/4) + 320;
 var info = window.open ("popup.php?id=<?php print $id ?>","fenster",'left=' + nPosX +',top=' + nPosY +',width=<?php print $breite ?>,height=<?php print $hoehe ?>');
}
</script>

Jetzt will ich das geöffnete Fenster durch den klick auf einen Button im obersten Frame schliessen:

fenster.close()

Das funnzt aber nicht....wo liegt der Fehler?

Gruss
Raffi

  1. Moin Moin !

    fenster.close()

    Das funnzt aber nicht....wo liegt der Fehler?

    Fehlermeldung ?

    info=window.open(....)

    fenster.close()

    Wie denn nun ? Du mußt Dich schon für eine Variable entscheiden !

    Und Du mußt natürlich die Variable irgendwie ins andere Frame bringen - viel Spaß! Wahrscheinlich muß das eine Frame das andere Frame bitten, das Popup zu schließen.

    Alexander

    --
    <!--#include file="signature.html" -->
    1. info.close

      Sorry!

      Aber es geht trotzdem nicht...Fenster wird nicht geschlossen.
      Es kommt keine Fehlermeldung.

      1. Habe das ganze nun im gleichen Frame....Geht immernoch nicht!
        Warum?

        <script language="JavaScript" type="text/JavaScript">
        function popup() {

        var nPosX = (top.screen.availWidth/4) - 21;
         var nPosY = (top.screen.availHeight/4) + 320;
         var fenster = window.open ("popup.php?id=<?php print $id ?>","fenster",'left=' + nPosX +',top=' + nPosY +',width=<?php print $breite ?>,height=<?php print $hoehe ?>');
        }

        function WindowClose(){
        fenster.close();
        }
        </script>

        </head>

        <body>
        <a href="#" onClick="WindowClose();">test</a>

        Ich bekomm folgende Fehlermeldung:

        "fenster" ist undefiniert!

        1. Moin Moin !

          Habe das ganze nun im gleichen Frame....Geht immernoch nicht!
          Warum?

          <script language="JavaScript" type="text/JavaScript">
          function popup() {

          [...]

          var fenster = window.open ("popup.php?id=<?php print $id ?>","fenster",'left=' + nPosX +',top=' + nPosY +',width=<?php print $breite ?>,height=<?php print $hoehe ?>');
          }

          function WindowClose(){
          fenster.close();
          }
          </script>

          Ich bekomm folgende Fehlermeldung:

          "fenster" ist undefiniert!

          Logisch.

          fenster ist eine lokale Variable der Funktion popup. Außerhalb der Funktion ist popup nicht definiert.

          Schreibe

          var fenster;

          vor die Funktionen und lasse das var vor fenster innerhalb der Funktion popup weg. Damit hast Du eine (Frame-)globale Variable.

          Alexander

          --
          <!--#include file="signature.html" -->
          1. Danke...Das funktioniert nun.

            Wie kann ich nun ne Abfrage machen, ob das Fenster offen ist?
            Wenn es offen ist den Windows.Close ausführen, ansonsten nix tun.

            Gruss
            Raffi

            1. Moin Moin !

              Danke...Das funktioniert nun.

              Wie kann ich nun ne Abfrage machen, ob das Fenster offen ist?

              if (fenster) {
                alert("Fenster ist vorhanden und auf");
              } else {
                alert("Fenster? Was für'n Fenster ?");
              }

              Wenn es offen ist den Windows.Close ausführen, ansonsten nix tun.

              if (fenster) fenster.close();

              Gruss
              Raffi

              Alexander

              --
              <!--#include file="signature.html" -->
              1. Es funzt leider nicht so ganz...ich erkläre es dir nochmals genauer.

                Seite 1 wird geladen. Prüft ob Fenster offen ist.

                Durch einen Button auf der Seite1 kann ein Fenster geöffnet werden.

                Wird die Seite 1 neu geladen und das vorhin geöffnete Fenster ist noch offen, wird es geschlossen.

                Gruss
                Raffi

                1. Moin Moin !

                  Das geht nicht, so lange Du die Variable "fenster" in "Seite 1" hast. Denn mit dem erneuten Laden der "Seite 1" wird erstmal alles pauschal vergessen, was vorher da war. Du mußt die Variable "fenster" woanders speichern, z.B. im Frameset. Sprich: statt "fenster" benutzt Du "top.fenster".

                  Alexander

                  --
                  <!--#include file="signature.html" -->
                  1. Hey Danke!

                    Jetzt funzzt es genau so wie es muss!!!

                    Sorry bin halt noch ein JavaScript Anfänger....

                    Gruss
                    Raffi

        2. Hi Raffi,

          guck Dir doch mal den Artikel von Sven Rautenberg zum Thema Fensterhandling an, wo sehr gut erklärt wird, wie Du Dich durch die Objekthierarchie bewegen musst, um das richtige Fenster anzusprechen und welche Abhängigkeiten zwischen den verschiedenen Objekten bestehen.

          Viele Grüße
          Mathias Bigge

  2. Es sollte eigentlich folgendes reischen:

    Function WindowClose()
    {
    info.close();
    }

    Wenn es irgendwelche Probleme geben sollte weil es verschiedene Frames sind, oder eine Msgbox kommte "Soll das Fenster geschlossen werden?" Dann versuch mal die Funktion in eine Externe JavaScript Datei zu backen und auf die Verweißt du dann von allen Seiten

    Gruß Recardo