Oliver: Überprüfung, ob Fenster geöffnet

*******************************************
function open() {
  report = window.open("about:blank", "Excel");
}

function check() {
  if (this.report) {
    alert ("Report found: " + report.name);
  } else {
    alert("Report not loaded!");
  }
}
*******************************************

Ich habe nun folgendes Problem:
Ich möchte mit check() überprüfen, ob der Report schon/noch geöffnet ist.

Funktioniert auch gut, wenn das Fenser entweder

  • noch nicht geöffnet wurde, oder
  • bereits geöffnet ist.

Wenn das Fenster nun allerdings schon wieder geschlossen wurde, zieht das ganze nicht mehr... und er bekommt eine Fehlermeldung.

Gibt es eine sichere(!) Möglichkeit, das Vorhandensein eines selber geöffneten Fensters zu überprüfen?

Danke und Gruß,
Oliver

  1. Hallo, (<- Begrüßung)

    Wenn das Fenster nun allerdings schon wieder geschlossen wurde, zieht das ganze nicht mehr... und er bekommt eine Fehlermeldung.

    es gibt noch 'mein_fenster.closed()'. So ungefähr jedenfalls, schlag mal nach. Die Syntax ist für MS und W3C verschieden.

    Gruß, Andreas

    --
    http://extra.andeas-lindig.de/was_das/
    ACHTUNG:
    wer andern eine Bratwurst brät,
    der hat ein Bratwurst-Bratgerät
    1. es gibt noch 'mein_fenster.closed()'.

      Ich kann nach dem Schliessen des Fensters nicht mehr auf die Variable zugreifen, es kommt

      "Der Aufgerufene (Server[nicht die Serveranwendung]) ist nicht verfügbar und nicht verschwunden. Alle Verbindungen sind ungültig. Der Aufruf wurde nicht ausgeführt."

      -Oliver-

      1. Hallo ,

        es gibt noch 'mein_fenster.closed()'.
        Ich kann nach dem Schliessen des Fensters nicht mehr auf die Variable zugreifen...

        geht aber. hab ich schonmal gemacht. muß ich aber erstmal zuhause rumkramen. kann Dir auf anhieb nicht sagen wie. Ich glaube ich habe die Variable in einem äußeren Frame abgelegt. Und sie muß vorbelegt sein, z.B. var Fenster = '#' damit sie erkannt wird.

        Gruß, Andreas

        --
        http://extra.andeas-lindig.de/was_das/
        ACHTUNG:
        wer andern eine Bratwurst brät,
        der hat ein Bratwurst-Bratgerät
        1. z.B. var Fenster = '#' damit sie erkannt wird.

          Hallo,

          das klappt dann, sehr gut ich danke dir! :)

        2. Hallo,
          nocheinmal danke für den Hinweis, klappt aber doch nicht so, wie ich mir das vorgestellt habe.
          Ich mache folgendes:
          ***************************************************
          report = '#';

          function test1() {
            report = window.open("about:blank", "fenster1");
            report.focus();
          }

          function test2() {
            if (report != '#' && !report.closed) {
              alert ("Da: " + report.name);
            } else {
              alert("Report not loaded!");
            }
          }
          ***************************************************
          Wenn ich jetzt 2 Mal test1() aufrufe, bekomme ich anschliessend bei test2() ein "Zugriff verweigert".
          Worann liegt das, und kann ich was dagegen tun?

          -Oliver-

          1. Hallo ,

            Worann liegt das, und kann ich was dagegen tun?

            tja, leider hast Du wieder Pech, denn ich bin mal wieder an einem Rechner ohne Diskettenlaufwerk (so'n moderner Mac an der FH). Deswegen kann ich Dir meine Lösung nicht schicken. Vielleicht später.

            Gruß, Andreas

            --
            http://extra.andeas-lindig.de/was_das/
            ACHTUNG:
            wer andern eine Bratwurst brät,
            der hat ein Bratwurst-Bratgerät
          2. Hallo Oliver,

            Ich habe zuhause mal gekramt. Ging zum Glück schnell. Hier ist ein funktionierendes Script, das Dir ermöglicht, den Zustand eines JavaScript-Fensters abzufragen. Ich habe damals die Variable 'fenster' extra global definiert und mit einem Wert belegt, weil ich ähnliche Fehlermeldungen hatte wie Du (siehe Kommentare). Aber nach meinen heutigen Tests ist das nicht nötig. Du kannst also diese Zeile: var fenster='#'; auch auskommentieren.

            Gruß, Andreas

            <html>
            <head>
            <title>Warenkorb</title>
            <meta name="author" content="tn6301">
            <meta name="generator" content="Ulli Meybohms HTML EDITOR">
            </head>
            <body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">

            neues Fenster:<br><br>

            <!-- wenn man mit der aufgerufenen Funktion auch etwas in die aktuelle Seite reinschreiben will,
                 muß man im 'href' 'javascript' aufrufen. Syntax: href="javascript:eventHandler=funktionsname()" -->
            <a href="javascript:onClick=oeffnen()">öffnen</a>
            <br><br>
            <a href="javascript:onClick=schliessen()">schließen</a>
            <br><br>
            <!-- hier kann man unabhängig von der aufgerufenen Funktion eine URL ins aktuelle Fenster rufen -->
            <a href="#" onClick="pruefen()">prüfen</a>

            <script language="JavaScript">
            <!--
            var fenster = '#'; //globale Variable muß einen Wert haben, sonst wird sie nicht gefunden ("Objekt nicht vorhanden")

            function oeffnen()
            {
                 fenster=window.open('','offenfenster', 'width=800,height=600');
                 fenster.focus();
            }

            function schliessen()
            {
                 //'!fenster.open'->'fenster zu' für IE; 'fenster.closed'->'fenster zu' für Netscape
                 if(!fenster.open || fenster.closed) // !fenster ||
                      alert('Fenster bereits geschlossen oder noch gar nicht geöffnet');
                 else
                 {
                      fenster.close();
                 }
            }

            function pruefen()
            {
             if(!fenster.open || fenster.closed)
                  alert('Fenster geschlossen');
             else
                  alert('Fenster geöffnet');
            }

            //-->
            </script>

            <noscript><br><br>schalten Sie Ihr Javascript ein</noscript>

            </body>
            </html>

  2. hi,

    Gibt es eine sichere(!) Möglichkeit, das Vorhandensein eines selber geöffneten Fensters zu überprüfen?

    Aelter Versionen des IE zicken da etwas, man muss gegebenenfalls einen Fehler abfangen, IE 6 versteht aber "[popup].closed". Kann also so aussehen:

    <html>
    <head>

    <title>popup check</title>

    <script language="javascript1.2" type="text/javascript">
    lala = null;
    function openpop() {
     lala = open("","","width=100,height=100");
    }

    function checkpop() {
     onerror =  function(){
      alert("Popup geschlossen");
      return true;
     }

    if(lala && !lala.closed) alert ("Fenster da!");
     else                     alert ("nix da");

    onerror = function(){
      return false;
     }
    }

    </script>
    </head>
    <body>
    <a href="#" onclick="openpop(); return false;">öffnen</a><br>
    <a href="#" onclick="checkpop(); return false;">testen</a><br>
    </body>
    </html>

    Gruesse  Joachim

  3. Hallo Oliver,

    achau mal hier: http://selfhtml.teamone.de/javascript/objekte/window.htm#closed.

    gruesse
    rainer groth

    --
    ss:| zu:} ls:& fo:) de:] va:| ch:] n4:° rl:? br:$ js:| ie:| fl:( mo:?
    (--> einer der letzten bauhaeusler <--)