BerndBln: "OnClose"-Funktion

Hallo zusammen...

Zum nicht vorhandenen Event-Handler "onClose" habe ich in einem Forum mal folgendes Script gefunden (Der Author dieses Scripts möge mir verzeihen, ich weiss nicht mehr, wo ichs her hatte!):

<script language="JavaScript">
<!--
function onUnloadHandler(){
 if(self.VBArray){
  var e = self.event, s = self.screen;
   if(e.clientX + s.width < 0
    && e.clientY + s.height < 0
    && typeof(window.onclose) == "function"){
    window.onclose();
   };
  };
 };
 onunload =onUnloadHandler;

function onclose(){
  window.open('delete.php?sid='+sid+'' ,'_blank', 'width=150, height=100');
 };
//-->
</script>

Es funktioniert SUPER! Wenn ich ein Fenster per X oder per Alt-F4 schliesse, öffnet sich ein weiteres Fenster, was dann meine Datenbank aktuallisiert(delete.php).
ABER... es funktioniert leider nur auf dem IE! "clientX" und "clientY" hab ich natürlich schon gegen "screenX" und "screenY" ausgetauscht, aber "self.VBArray"? Soweit wie ich bisher gelesen habe, ist das eine spezielle JScript Eigenschaft von Microsoft. Was macht die und wie kann ich die auch Netscape-kompatibel schreiben??

Vielen Dank im voraus...
Bernd

  1. Hi.

    Zum nicht vorhandenen Event-Handler "onClose" habe ich in einem Forum mal folgendes Script gefunden (Der Author dieses Scripts möge mir verzeihen, ich weiss nicht mehr, wo ichs her hatte!):

    [Script]

    Es funktioniert SUPER! Wenn ich ein Fenster per X oder per Alt-F4 schliesse, öffnet sich ein weiteres Fenster, was dann meine Datenbank aktuallisiert(delete.php).

    Wieso nimmst Du nicht onUnload? Das wird aktiv, sobald ein Fenster geschlossen wird, kennt man ja von diversen Werbe-Popups, die beim Schließen immer neue öffnen.

    http://selfhtml.teamone.de/javascript/sprache/eventhandler.htm#onunload

    MfG, Arne P.

    1. Hi.

      Wieso nimmst Du nicht onUnload? Das wird aktiv, sobald ein Fenster geschlossen wird, kennt man ja von diversen Werbe-Popups, die beim Schließen immer neue öffnen.

      http://selfhtml.teamone.de/javascript/sprache/eventhandler.htm#onunload

      MfG, Arne P.

      Hallo Arne...
      onUnload reagiert ja leider auch auf einen Seitenwechsel innerhalb des Projektes und das ist nicht Sinn und Zweck meines Vorhabens. Es soll lediglich bei Alt-F4 oder beim X ein kurzes Script ausgeführt werden und die Sitzung damit dann beendet sein. SessionID's oder Cookies möcht ich nicht, da sie immernoch eine gewisse "Nachlaufzeit" besitzen, auch wenn der User die Seite schon verlassen hat.

      Trotzdem Danke für die Antwort.
      Bernd

      1. Hi.

        onUnload reagiert ja leider auch auf einen Seitenwechsel innerhalb des Projektes und das ist nicht Sinn und Zweck meines Vorhabens. Es soll lediglich bei Alt-F4 oder beim X ein kurzes Script ausgeführt werden und die Sitzung damit dann beendet sein. SessionID's oder Cookies möcht ich nicht, da sie immernoch eine gewisse "Nachlaufzeit" besitzen, auch wenn der User die Seite schon verlassen hat.

        Verstehe!
        Ich habe ein wenig gebastelt und folgendes zu Stande gebracht:

        <html>
            <head>
            <script>
            <!--
                function unload()
                {
                    if (exit == 1) window.open("delete.php","x");
                }
                exit=1;
            //-->
            </script>
            </head>
            <body onunload="unload()">
                <h1>Datei 1</h1>
                <a href="test2.html" onclick="exit=0">Datei 2</a>
            </body>
            </html>

        Beim Laden des Dokuments wird die Variable exit auf 1 gesetzt. Wenn ein Link geklickt wird, wird das Event onclick ausgeführt und exit auf 0 gesetzt, dann wird die neue Seite aufgerufen. Dabei wird die Funktion unload() aufgerufen. Da exit auf 0 steht, wird kein neues Fenster aufgerufen.
        Wenn die Seite nun nicht über einen Link verlassen wird (Schließen des Fensters, Eingabe eines anderen URL), bleibt exit auf 1, also wird ein neues Fenster mit "delete.php" aufgerufen.

        Funktioniert leider nur im Opera6 und IE5 beim Schließen _und_ URL-Wechsel, bei NN4.7 und Moz1 _nur_ bei URL-Wechsel. Mozilla/NN kennt anscheinen kein onunload="" beim Schließen des Fensters, kann das sein?

        MfG, Arne P.

        1. Hi.

          Verstehe!
          Ich habe ein wenig gebastelt und folgendes zu Stande gebracht:

          <html>
              <head>
              <script>
              <!--
                  function unload()
                  {
                      if (exit == 1) window.open("delete.php","x");
                  }
                  exit=1;
              //-->
              </script>
              </head>
              <body onunload="unload()">
                  <h1>Datei 1</h1>
                  <a href="test2.html" onclick="exit=0">Datei 2</a>
              </body>
              </html>

          Beim Laden des Dokuments wird die Variable exit auf 1 gesetzt. Wenn ein Link geklickt wird, wird das Event onclick ausgeführt und exit auf 0 gesetzt, dann wird die neue Seite aufgerufen. Dabei wird die Funktion unload() aufgerufen. Da exit auf 0 steht, wird kein neues Fenster aufgerufen.
          Wenn die Seite nun nicht über einen Link verlassen wird (Schließen des Fensters, Eingabe eines anderen URL), bleibt exit auf 1, also wird ein neues Fenster mit "delete.php" aufgerufen.

          Funktioniert leider nur im Opera6 und IE5 beim Schließen _und_ URL-Wechsel, bei NN4.7 und Moz1 _nur_ bei URL-Wechsel. Mozilla/NN kennt anscheinen kein onunload="" beim Schließen des Fensters, kann das sein?

          MfG, Arne P.

          Hallo Arne und all die anderen...
          Genau das ist mein Problem! Auf dem IE funktioniert das Script von mir ja auch hervorragend, aber eben auf'm Netscape nicht! Aber dein Script sieht dafür wesenlich einfacher aus!
          Ich hab den Netscape leider nur auf einem lokalen Rechner ohne Netzzugang drauf... gibts denn bei dem nicht das nervige Phänomen der PopUps? 1 Fenster schliessen - 5 neue gehen auf? Wobei ich betonen möchte, das ich den User NICHT nerven will, sondern mit meinem "Delete"-PopUp lediglich die Datenbank bereinigen möchte.

          Fragende Grüsse...
          Bernd

          1. Hi.

            Funktioniert leider nur im Opera6 und IE5 beim Schließen _und_ URL-Wechsel, bei NN4.7 und Moz1 _nur_ bei URL-Wechsel. Mozilla/NN kennt anscheinen kein onunload="" beim Schließen des Fensters, kann das sein?

            Genau das ist mein Problem! Auf dem IE funktioniert das Script von mir ja auch hervorragend, aber eben auf'm Netscape nicht! Aber dein Script sieht dafür wesenlich einfacher aus!

            Ich bin grade mal ein bißchen in der Gegend rumgesurft auf der Suche nach Popup-Seiten und habe bei http://www.uly.com (extra nicht anklickbar) genau das von mir heute morgen eigenhändig ausgedachte Script gefunden. ;-)
            Es gibt nur einen kleinen Unterschied: im NN4.7 funktioniert es bei denen, meines hingegen nicht. Auch wenn ich es kopiere, geht es nicht. Vielleicht geht es nur online? Habe ich nicht probiert.

            Ich hab den Netscape leider nur auf einem lokalen Rechner ohne Netzzugang drauf... gibts denn bei dem nicht das nervige Phänomen der PopUps? 1 Fenster schliessen - 5 neue gehen auf?

            Beim NN4.7 geht's, der Mozilla scheint es tatsächlich nicht zu kennen. Ob das eine Spamsperre ist, weiß ich nicht, ich habe in der Config vom Mozilla alles auf "erlauben" gestellt. Müssen wir mal warten, ob hier ein (der?) Mozilla-Experte auftaucht...

            Wobei ich betonen möchte, das ich den User NICHT nerven will, sondern mit meinem "Delete"-PopUp lediglich die Datenbank bereinigen möchte.

            Schon klar! Nicht alles was man mit J(ava)Script machen kann, ist schlecht (auch ein Fullscreen im IE ist manchmal sinnvoll - aber das ist ein anderes Thema ;-)

            MfG, Arne P.