Michael Decker: Reload und Close

Hi!

Ich würde gerne, wenn mein Fenster geschlossen wird ein kleines JavaScript ausführen. Dieses sollte aber nur gestartet werden, wenn das Fenster wirklich geschlossen wird und nicht schon wenn ein Reload geschiet.
Ich benütze onunload, aber das wird ja sowohl beim Reload als auch beim Close ausgeführt.

Hat jemand eine Idee?

Mein momentaner Code sieht so aus:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
 <title>Datenbank</title>
<script language="JavaScript" type="text/javascript">
<!--

self.moveTo(0,0);
self.window.resizeTo(screen.availWidth, screen.availHeight);
self.focus();

var jsv_global_sammelliste = null;

var jsv_timeout_time = 15; // Minutenanzahl bis Timeout
var jsv_timeout_counter = -1; // Aktuelle Countdown
var jsv_timeout_is = false; // Wenn ein Timeout zustande kahm und somit diese Seite geschlossen wird... dann true

function js_timeout() { // Wenn ein Timeout provoizert wurde, müssen alle richigen Seiten geladen werden und Variablen gesetzt werden...
 jsv_timeout_is = true;
 js_invalidate_session();
 alert("TimeOut");
}

function js_invalidate_session() {// Öffnet Fenster zum ungültig Erklären der aktuellen Session
 alert("Session ist nun ungültig");
}

function js_timer_count() { // Minuten
 jsv_timeout_counter--;
 if (jsv_timeout_counter<0) { // Session-TimeOut
  js_timeout();
 }
 jsv_tmp = setTimeout("js_timer_count();",60000); // Nach einer Minute weiter runterzählen
}

function js_timer_start() { // Startet alles
 js_timer_reset();
 js_timer_count();
}

function js_timer_reset() { // Setzt wieder auf Startwert
 jsv_timeout_counter = jsv_timeout_time;
}

function js_closing() { // reagiert auf User bedingtes Fenster Schließen
 if (!jsv_timeout_is) { // Wenn diese Funktion nicht durch den JS-TimeOut ausgelöst wurde
  alert("Fenster wurde vom User geschlossen");
 }
}

function js_load() {
}

js_timer_start();
//-->
</script>
</head>

<!-- frames -->

<frameset onUnload="js_closing();" onload="js_load();">
    <frame name="fr_overframe" src="bsp.html" marginwidth="0" marginheight="0" scrolling="no" frameborder="0">
</frameset>

<body>
</body>
</html>

  1. Hi!

    Ich würde gerne, wenn mein Fenster geschlossen wird ein kleines JavaScript ausführen. Dieses sollte aber nur gestartet werden, wenn das Fenster wirklich geschlossen wird und nicht schon wenn ein Reload geschiet.
    Ich benütze onunload, aber das wird ja sowohl beim Reload als auch beim Close ausgeführt.

    Hat jemand eine Idee?

    Meine einzige Idee ist: Du verbietest den Reload mit einer leeren Funktion, die bei Reload aufgerufen wird.
    Nicht sehr nett, aber da du sowieso den Besucher schon arg vergewaltigst, kommts auf eine weitere auch nicht mehr an.
    Der Besucher wirds dir danken und nicht wiederkommen.

    Ciao

    W. Pichler

    1. Nicht sehr nett, aber da du sowieso den Besucher schon arg vergewaltigst, kommts auf eine weitere auch nicht mehr an.
      Der Besucher wirds dir danken und nicht wiederkommen.

      Es geht einfach darum, dass auch, wenn der User einfach das Fenster schließt, dann bei meiner kleinen Applikation die komplette Abmeldungsgeschichte durchgeführt wird.
      Darum will ich das.

      Meine einzige Idee ist: Du verbietest den Reload mit einer leeren Funktion, die bei Reload aufgerufen wird.

      Das würde ich auch machen, aber wie soll ich denn einen Reload abfange, wenn ich nciht einmal zwischen Reload und Close unterscheiden kann?
      Und wie sollte ich den Reload abfangen?

      Michael

      1. ch denn einen Reload abfange, wenn ich nciht einmal zwischen Reload und Close unterscheiden kann?

        Und wie sollte ich den Reload abfangen?

        Du kannst ein Cookie setzen, das bei jedem Aufruf um eins hochzählt. Nur muß der Cookie sehr kurzlebig sein, damit er nicht den Besuch tags darauf auch noch als reload zählt.

        Ciao

        W. Pichler