Tomcat: Überprüfung Fenster (die 342245,56te)

Hallo alle,

auf der Seite default.asp öffne ich per

var Virenhinweis = window.open("Diverses/sdathinweis.asp","Virenhinweis","width=600,height=600,....u.s.w.");

ein neues Fenster. Gleichzeitig lasse ich die default.asp per

<meta http-equiv="refresh" content="1; URL=Pages/default.asp">

"weiterleiten". Auf eine andere default.asp in einem anderen Verzeichnis.

Was passiert? Das gewollte 2. Fenster geht auf und die eigendliche default.asp wird auf die 2. default.asp weitergeleitet. Alles gut..;-)

Nun will ich auf der 2. default.asp überprüfen, ob das zusätzlich geöffnete Fenster noch offen ist und wenn ja, es nach vorne holen bzw. aktiv machen.

Das versuche ich wie folgt:

<script type="text/javascript">
<!--
function Pruefen()
{
 if(top.window('Virenhinweis').closed == true)
  focus('Virenhinweis');
 else
  focus(opener);
}
//-->
</script>

Im Body der 2. default.asp steht natürlich dann "onLoad="Pruefen();".

Meine Interpretation des Scriptes ist (kann ja meinerseits auch ein Verständnisproblem sein):

Wenn das obere Fenster mit dem Namen "Virenhinweis" nicht geschlossen ist, dann hol es mir in den Vordergrund (mach es aktiv), ansonsten mach das "Hauptfenster" aktiv.

Grund des Ganzen ist, das 2. Seite nur aufgerufen werden soll, wenn die Page von "vorne" geladen wird. Wenn später die 2. default.asp (sie wird die "HOMEpage") "refreshed" wird (per Kontexmenü der Maus oder "F5" Taste), dann soll sie nicht erscheinen. Auf Cookies möchte ich noch verzichten.

Wie sicherlich schon einige von euch an meinem Codebeispiel erkannt haben, klappt es nicht so, wie ich will..;-(

Ich bekomme u. a. die Meldung das "Member not found" (bei meinem Bespiel) oder das 2. Fenster geht trotz allem in den Hintergrund, wenn ich schreibe "if(top.window.closed == true)".

Auch habe ich schon das hier im Forum gefundene Script

if(Wirenhinweis.closed == true) alert("Seite ist noch offen")
else alert("Die Seite ist geschlossen")

probiert. Aber das Ergebnis war weniger logisch, da ich immer die gleiche Meldung bekam, egal ob die Seite offen war oder nicht. Auch ein Austausch von "true/false" brachte das 2. Fenstern nicht in den Vordergrund.

Auch wenn ich das 2. Fenster von der 2. default.asp öffnen lasse (hatte gedacht, vielleicht kommt die var nicht mit), bekomme ich die gleichen Fehler bei den jeweiligen Scripten.

Kann bitte einer von euch einmal meine Code durchschauen und mir erklären, wo ich den Fehler mache? Und vielleicht ein Bespiel mitposten? Das wäre sehr lieb.

Mit freundlichem Gruss und Danke im Voraus

Tom

  1. Hallo Tom,

    Virenhinweis = window.open("Diverses/sdathinweis.asp","Virenhinweis"
     ...
     if(top.window('Virenhinweis').closed == true)
       focus('Virenhinweis');
     Wenn das obere Fenster mit dem Namen "Virenhinweis" nicht geschlossen ist

    Nein, der Name eines Fensters hat nichts mit dem Rückgabewert der Methode open() zu tun.

    Wenn überhaupt, dann musst die Prüfung über Virenhinweis.closed erfolgen. Wobei "Virenhinweis" _NICHT_ der Fenstername ist. Es ist deine Variable Virenhinweis = window.open()

    Wobei die zu diesem Zeitpunkt natürlich nicht mehr existiert. Aber das ist ein anderes Problem.

    Grüße,

    Jochen

    1. hi,

      if(top.window('Virenhinweis').closed == true)
         focus('Virenhinweis');
       Wenn das obere Fenster mit dem Namen "Virenhinweis" nicht geschlossen ist

      Nein, der Name eines Fensters hat nichts mit dem Rückgabewert der Methode open() zu tun.

      das ist richtig.
      im beispiel waren aber beide identisch - etwas ungünstig.

      Wenn überhaupt, dann musst die Prüfung über Virenhinweis.closed erfolgen. Wobei "Virenhinweis" _NICHT_ der Fenstername ist. Es ist deine Variable Virenhinweis = window.open()
      Wobei die zu diesem Zeitpunkt natürlich nicht mehr existiert. Aber das ist ein anderes Problem.

      das fenster mit dem _fensternamen_ "Virenhinweis" ist aber evtl. noch vorhanden.
      ein link mit target="Virenhinweis" würde ja jetzt auch in dieses fenster gehen, und kein neues öffnen, so es denn noch vorhanden ist.

      if(top.window('Virenhinweis').closed == true)

      hier würde ich mal versuchen, window["Virenhinweis"] auf _existenz_ abzufragen.
      das müsste mMn. existieren, wenn es noch ein fenster mit diesem namen gibt.

      gruß,
      wahsaga

      --
      Windows Service Pack?
      Ich dachte bisher immer, das wäre eine verächtliche Bezeichnung für MCSE ...
      1. Guten Morgen wahsaga,

        da ich die Möglichkeit noch nicht kannte und sie für die elegantere halte (window[name]), habe ich das mal versucht. Im Mozilla tut sich dort leider nichts, vielleicht habe ich nur einen Denkfehler :\

        Zielseite der Weiterleitung:

        if(window[name]) alert('ja')

        Gruß aus Berlin!
        eddi

        --
        Manchmal trifft es einen doch ganz unverhofft t86591:
        > '..."Vorläufig abgebrochen" ist ungefähr so sinnvoll formuliert, wie "einstweilig erschossen" oder "temporär verbrannt"...'
        Ich danke Sven für diese Erkenntnis - Gott, was habe ich gelacht ;)
        1. Hallo Jungs,

          erst einmal, bevor dieser Beitrag im Archiv "verschwindet", vielen Dank für eure Hilfen und Anregungen!!!

          Ich lass von Erfolg oder Misserfolg noch einmal hören.

          Gruß

          Tom

    2. Hallo Tomcat,

      wie Jochen schon richtig festgestellt hat, ist es der Rückgabewert der Methode window.open() mit dem Weiterleiten auf ein anderes Dokument nicht mehr verfügbar. Damit hier aber nicht wirgendwann mal "Überprüfung Fenster (die 548651549845464898964,87te)" auftaucht, gibt es dennoch eine Lösung für dieses Poblem:

      Da Du Dir die Mittel und Wege durch die Weiterleitung (hat diese symbolischen Charakter für ein nicht atypische Verhalten von Usern Links aufzusuchen?) genommen hast und somit von Sicht aus der öffnenden Instanz keine Möglichkeiten mehr hast, ist aus Sicht der geöffneten Instanz immernoch window.opener verfügbar ;)

      Seite 1
      ##############################
      <script>var v=0;</script>

      <body onLoad='window.open("Seite 3");location.herf="Seite 2"'>

      Seite 2
      ##############################
      <script>
      function popup_pruefe() {}
      var v=1;
      </script>

      Seite 3
      ##############################
      <script>
      funktion pruefe_opener()
         {
         if(window.opener.v==1) window.opener.popup_pruefe()
         else                   setTimeout("pruefe_opener()",500);
         }
      window.setTimeout("pruefe_opener()",1000);
      </script>

      In Seite 2 solltest Du die Variabele "v" unbedingt nach der Funktion definieren, sonnst ist die Variable vielleicht schon da, aber die Funktion ist noch nicht verfügbar - da noch nicht vollends eingelesen.

      So simpel geht's manchmal ;)

      Gruß aus Berlin!
      eddi

      --
      Manchmal trifft es einen doch ganz unverhofft t86591:
      > '..."Vorläufig abgebrochen" ist ungefähr so sinnvoll formuliert, wie "einstweilig erschossen" oder "temporär verbrannt"...'
      Ich danke Sven für diese Erkenntnis - Gott, was habe ich gelacht ;)