Cruz: fenster schließen

Hallo ihr.....ihr wisst schon!

Ich habe mit

function weiter() {
window.open("email.html","email","height=320,width=350");
window.open("arrow.html","arrow","height=5,width=5");
window.close();
}

2 neue fenster geöffnet und das öffnende Fenster zugemacht.
So jetzt möchte ich in dem neuen Fenster namens email wieder EIN neues Fenster öffnen und die  beiden alten, email und arrow zumachen.

So:

function weiter() {
window.open("email2.html","email2","height=457,width=655");
arrow.close();
window.close();
}

hat es jedenfalls nicht funktioniert...also wie dann?

Gruß
Cruz

  1. Hallo Cruz!

    So jetzt möchte ich in dem neuen Fenster namens email wieder EIN neues Fenster öffnen und die  beiden alten, email und arrow zumachen.

    Na, da hast Du Dir ja heute ein besonderes Schmankerl fuer uns ausgedacht... *g*

    function weiter() {
    window.open("email2.html","email2","height=457,width=655");
    arrow.close();
    window.close();
    }
    hat es jedenfalls nicht funktioniert...also wie dann?

    Nee, kann's auch nicht. Der Name, den Du als zweiten Parameter angegeben hast, ist so ein Name, den man auch mit <A HREF="..." TARGET="arrow"> vergibt/anspricht. Das hat aber nichts mit der "Referenz auf eine Instanz des window-Objektes" arrow, die Du mit arrow.close() nutzen willst, zu tun. Diese Referenz (Pointer) gibt es hier auch gar nicht, denn das waere der Rueckgabewert der window.open()-Funktion gewesen. Na, genug des Gelabers, ich versuch jetzt mal, was zusammenzuzimmern.

    Also, in das urspruengliche Fenster:

    <SCRIPT usw.>
        var email_loaded;
        var arrow_ref;

    function close_myself() {
            email_loaded ? window.close() : setTimeout("close_myself()", 100);
        }

    function weiter() {
            /* Diese Befehle in GENAU DIESER REIHENFOLGE! */
            email_loaded = 0;
            arrow_ref = window.open("arrow.html","arrow","height=5,width=5");
            window.open("email.html","email","height=320,width=350");
            setTimeout("close_myself()", 100);
        }
    </SCRIPT>

    Dann in das email-Fenster:

    <SCRIPT usw.>
        var arrow_ref;

    function BodyLoaded() {
            arrow_ref = opener.arrow_ref;
            opener.email_loaded = 1;
        }
        
        function nochn_fenster() {
            window.open("noch_eins.html", "nocheins", "...");
            /* jetzt der Zugriff ueber die vorher vom Elternfenster kopierte und dort von window.open()
               zurueckgelieferte Referenz auf das arrow-Fenster */
            arrow_ref.close();
            self.close();   // und uns selber auch zumachen
        }
    </SCRIPT>

    <BODY OnLoad="BodyLoaded()">

    Keine Ahnung, ob das funktioniert, aber logisch waer's zumindest. *g* Die Funktion nochn_fenster() macht dann das ganz neue auf und schliesst die bestehenden beiden, wie Du hoffentlich unschwer erkennst. ;-)

    Zur besseren Verstaendlichkeit, die Zeile in der Funktion close_myself() macht dasselbe wie
        if (email_loaded == 1)
            window.close();
        else
            setTimeout("close_myself()", 100);

    Uebrigens ist "height=5,width=5" fuer arrow nicht erlaubt, zumindest beim Netscape. Der will wohl mindestens 100x100 oder so.

    Naja, probiers mal
    Calocybe

    1. Ey, danke für den Tipp. Als ich das gelesen hab empfand ich das direkt als einen Tritt in den Arsch mir etwas viel einfacheres einfallen zu lassen. hihi. Ist mir zum Glück auch gelungen.

      Ich öffne jetzt email und arrow nicht mehr in EINER function, sondern öffne erst arrow und email dann im onLoad von arrow. Im email steht dann opener.close() und und window.close() und schwupps sind die beide wieder weg. :)

      Cruz

      Hallo Cruz!

      So jetzt möchte ich in dem neuen Fenster namens email wieder EIN neues Fenster öffnen und die  beiden alten, email und arrow zumachen.

      Na, da hast Du Dir ja heute ein besonderes Schmankerl fuer uns ausgedacht... *g*

      function weiter() {
      window.open("email2.html","email2","height=457,width=655");
      arrow.close();
      window.close();
      }
      hat es jedenfalls nicht funktioniert...also wie dann?

      Nee, kann's auch nicht. Der Name, den Du als zweiten Parameter angegeben hast, ist so ein Name, den man auch mit <A HREF="..." TARGET="arrow"> vergibt/anspricht. Das hat aber nichts mit der "Referenz auf eine Instanz des window-Objektes" arrow, die Du mit arrow.close() nutzen willst, zu tun. Diese Referenz (Pointer) gibt es hier auch gar nicht, denn das waere der Rueckgabewert der window.open()-Funktion gewesen. Na, genug des Gelabers, ich versuch jetzt mal, was zusammenzuzimmern.

      Also, in das urspruengliche Fenster:

      <SCRIPT usw.>
          var email_loaded;
          var arrow_ref;

      function close_myself() {
              email_loaded ? window.close() : setTimeout("close_myself()", 100);
          }

      function weiter() {
              /* Diese Befehle in GENAU DIESER REIHENFOLGE! */
              email_loaded = 0;
              arrow_ref = window.open("arrow.html","arrow","height=5,width=5");
              window.open("email.html","email","height=320,width=350");
              setTimeout("close_myself()", 100);
          }
      </SCRIPT>

      Dann in das email-Fenster:

      <SCRIPT usw.>
          var arrow_ref;

      function BodyLoaded() {
              arrow_ref = opener.arrow_ref;
              opener.email_loaded = 1;
          }
          
          function nochn_fenster() {
              window.open("noch_eins.html", "nocheins", "...");
              /* jetzt der Zugriff ueber die vorher vom Elternfenster kopierte und dort von window.open()
                 zurueckgelieferte Referenz auf das arrow-Fenster */
              arrow_ref.close();
              self.close();   // und uns selber auch zumachen
          }
      </SCRIPT>

      <BODY OnLoad="BodyLoaded()">

      Keine Ahnung, ob das funktioniert, aber logisch waer's zumindest. *g* Die Funktion nochn_fenster() macht dann das ganz neue auf und schliesst die bestehenden beiden, wie Du hoffentlich unschwer erkennst. ;-)

      Zur besseren Verstaendlichkeit, die Zeile in der Funktion close_myself() macht dasselbe wie
          if (email_loaded == 1)
              window.close();
          else
              setTimeout("close_myself()", 100);

      Uebrigens ist "height=5,width=5" fuer arrow nicht erlaubt, zumindest beim Netscape. Der will wohl mindestens 100x100 oder so.

      Naja, probiers mal
      Calocybe