Barbara: window.open() + window.close()

Servus, ich hoffe Ihr könnt mir helfen, ich suche schon so lange eine Lösung und bin ganz verzweifelt.
Problem:

Ich habe beim Aufruf von asp.net seiten u. Datenbank manchmal eine etwas längere Ladezeit, um ungeduldige User vom herumklicken abzuhalten möchte ich eine Seite bzw. Meldung ausgeben.

Mein Lösungsansatz bei Klick auf einen Button wird eine Seite mit der bitte warten Meldung geladen und bei body onload der aufgerufenen Seite möchte ich die zuvor mit window.open() geöffnete Seite wieder schliessen. Also Seite A öffnet Seite B und Seite C schließt Seite B. Irgendwie funktioniert das nicht so wie ich will, denn ich bekomme immer die Fehlermeldung das Fenster B nicht definiert ist.

Dabei dachte ich im selfhtml einmal sowas in der Art von eine mit window.open geöffnetes Fenster behält seinen Namen bis es geschlossen wird, gelesen zu haben.
------------------------///--------------------------------
Hier der Code vom Button auf Seite A:
------------------------///--------------------------------
<A href="#" onclick="javascript:parent.links.location.href='../system/typenkatalog/baum.aspx?usid=<%=Request.QueryString("usid")%>&coid=<%=Request.QueryString("coid")%>';parent.mitte.location.href='blank.htm';window.open('../system/typenkatalog/pleaswait.html','popupwin','width=485 heigth=50');">
     <input style="FONT-WEIGHT: bold; WIDTH: 150px; COLOR: #000000" type="button" value="Typenkatalog" runat="server" ID="Button1" NAME="Button1"></A>

------------------------///-------------------------------
Das funktioniert, hier wird jetzt ein Fenster geöffnet:
------------------------///--------------------------------
<html>
 <head>
  <title>:::::Bitte warten:::::</title>
  <LINK href="../../stylesheet/drb.css" type="text/css" rel="stylesheet">
 </head>
 <body MS_POSITIONING="GridLayout">
  <DIV style="DISPLAY: inline; Z-INDEX: 101; LEFT: 1px; WIDTH: 500px; POSITION: absolute; TOP: 1px; HEIGHT: 50px" ms_positioning="FlowLayout" id="DIV1">
   <FONT face="wingdings" color="#ffffff" size="10">
    <marquee direction="right" bgcolor="#00729d" behavior="" width="248">è
   </marquee>
    <marquee width="248" direction="left" bgcolor="#00729d">ç</marquee></FONT>
   <br>
   <br>
   <font style="FONT-WEIGHT: bold; FONT-SIZE: small">Bitte warten! Verbindung mit der
    Datenbank erfolgt...</font>
  </DIV>
 </body>
</html>
------------------------///--------------------------------
Und schließlich soll Seite C das Fenster wieder schliessen:

------------------------///--------------------------------
<script language="javascript">
 function test()
 {
 popupwin.close();
 }
 </script>
 <Body onload="javascript:test();">

------------------------///--------------------------------

Ich hoffe wirklich, Ihr könnt mir helfen, also besten Dank im Voraus

lg Barbara

  1. Hallo Barbara,
    ich bin nicht sicher ob es überhaupt geht. Von wegen Sicherheitskonzept der Fenster. C hat ja überhaupt keine Ahnung von wem B geöffnet wurde. Normalerweise darf ein Fenster (ohne Rückfrage) nur seine Kinder über close() schließen.

    parent.mitte.location.href='blank.htm';window.open('../system/typenkatalog/pleaswait.html','popupwin','width=485 heigth=50');">

    'popupwin' ist die Angabe für targets. Du musst dir den Rückgabewert von open() merken.
    win = window.open('...','...','width=485 heigth=50');

    Diese "win" muss jetzt irgendwie zum Fenster C

    function test()
     {
     popupwin.close();

    win.close();

    }
     </script>

    HTH

    Maxx

    1. Hi,

      Hilft das opener Objekt weiter?
      http://selfhtml.teamone.de/javascript/objekte/window.htm#allgemeines

      Gruß

      _marcus

    2. Hallo Barbara,
      ich bin nicht sicher ob es überhaupt geht. Von wegen Sicherheitskonzept der Fenster. C hat ja überhaupt keine Ahnung von wem B geöffnet wurde. Normalerweise darf ein Fenster (ohne Rückfrage) nur seine Kinder über close() schließen.

      parent.mitte.location.href='blank.htm';window.open('../system/typenkatalog/pleaswait.html','popupwin','width=485 heigth=50');">

      'popupwin' ist die Angabe für targets. Du musst dir den Rückgabewert von open() merken.
      win = window.open('...','...','width=485 heigth=50');

      Diese "win" muss jetzt irgendwie zum Fenster C

      function test()
       {
       popupwin.close();
          win.close();
       }
       </script>

      HTH

      Maxx

      Hallo Maxx,

      ich habe es auch schon so mit win= window.open() usw. probiert auch da kam die Fehlermeldung win ist undefiniert. gibt es sonst keine Möglichkeit? ev. dass man in Fenster B eine Funktion zum Schliessen mit reinschreibt und aus Fenster C diese Funktion aufruft, oder kennt Fenster C Fenster B überhaupt nicht?

      lg Barbara

      1. Hallo Barbara,

        oder kennt Fenster C Fenster B überhaupt nicht?

        ja, daran scheitert es. Aber! wenn ich das richtig sehe

        parent.mitte.location.href='blank.htm';

        hast du ein Frameset. So müsste es möglich sein dem Fenster C (das wird doch auch innerhalb des Framesets geöffnet?) die Existenz von B weiterzugeben.

        Du müsstest das Objekt, dass du beim öffnen des Hinweisfensters bekommst in einem deiner Frames ablegen, und darauf beim close(); referenzieren. Frag mich bitte nicht nach Details. Ich habe mir das jetzt so aus den Fingern gesogen ... ohne Gewähr sozusagen.

        Viele Grüße, Maxx

  2. Hallo beisamen, ich habe bereits eine Lösung gefunden:

    fenster A öffnet mit win = window.open(seite1.html,....)

    Fenster B =  seite1.html, also Bitte warten......

    Fenster C öffnet mit win = window.opne(seite2.html,....)

    -in das bereits geöffnete Fenster wird eine neue Seite geladen, in der Seite gibt es nur die window.self.close() Anweisung und sonst nichts.

    Schaut einstweilen ganz gut aus, für weitere Anregungen bin ich jedoch dankbar.

    lg Barbara