tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
9
ZUGRIFFE
400
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von meste
    meste meste ist offline Mitglied Gold
    Registriert seit
    Dec 2003
    Beiträge
    173
    Hallo allerseits,

    ich versuche verzweifelt den Event NUR beim schließen des Browsers abzufangen ohne Erfolg. Habe es bereits mit
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    <script language="javascript" type="text/javascript">
            function closeIt() {
                Check = confirm("Wollen Sie diese Seite wirklich beenden?");
                if (Check == false) { alert("Nein"); }
                else { alert("Ja"); }
            }
            window.onbeforeunload = closeIt;
        </script>
    probiert allerdings wird die messageBox immer angezeigt auch beim klick auf einen Link und/oder beim schließen des Browsers bzg. Tab-Reiter. Weiters kommt nach dieser MessageBox eine zweite und eine dritte MessageBox welches eigentlich nicht kommen sollte.

    Schließen vom Browser abfragen-msg1.bmp
    Schließen vom Browser abfragen-msg2.bmp
    Schließen vom Browser abfragen-msg3.jpg

    Wie kann ich auf einfachste Art und Weise eine MessageBox anzeigen und je nach was der User auswählt, entweder das Fenster schließen oder eine ASP-Methode im CodeBehind aufrufen?

    Wäre für jede Hilfe sehr dankbar.
    Lg
    m.e.s.t.e
     
    Gottes Wort ist mein Schwert und sein Urteil wird meine Rache sein!

  2. #2
    CPoly CPoly ist offline Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.445
    Zitat Zitat von meste Beitrag anzeigen
    ich versuche verzweifelt den Event NUR beim schließen des Browsers abzufangen ohne Erfolg.
    Das geht nicht.

    Zitat Zitat von meste Beitrag anzeigen
    allerdings wird die messageBox immer angezeigt auch beim klick auf einen Link und/oder beim schließen des Browsers bzg. Tab-Reiter.
    Das ist bei onunload eben so.

    Zitat Zitat von meste Beitrag anzeigen
    eine zweite und eine dritte MessageBox welches eigentlich nicht kommen sollte.
    Dann musst du die auch aus deinem Code raus nehmen. Du rufst dort ja explizit "confirm" UND "alert" auf (beide nicht nötig).


    Zitat Zitat von meste Beitrag anzeigen
    Wie kann ich auf einfachste Art und Weise eine MessageBox anzeigen und je nach was der User auswählt, entweder das Fenster schließen oder eine ASP-Methode im CodeBehind aufrufen?
    Das ist nicht möglich. Das Event gehört nicht zum Standard und wird überall anders unterstützt. https://developer.mozilla.org/en/DOM...onbeforeunload
     

  3. #3
    Avatar von meste
    meste meste ist offline Mitglied Gold
    Registriert seit
    Dec 2003
    Beiträge
    173
    ... danke vorerst für deine Antwort aber wei funktioniert es bei MSDN.
    Wenn man dort einen Beitrag schreibt und dann mitten drin auf x klickt kommt die meldung.
    Wenn man aber auf speichern klickt kommt keine Meldung.

    Der Sinn meiner Frage:
    Sobald sich der user abmeldet oder den Browser schließt möchte die Spalte "isOnline" in der DB auf false setzen. Beim ordnungsgemäßem Abmelden ist das kein Problem aber wenn der User den Browser schließt würde ich das sonst nicht mitbekommen und der User wäre trotzdem noch online.

    Danke und Lg
    m.e.s.t.e

    Verwende ASP und MS-SQL
    Geändert von meste (30.01.12 um 12:47 Uhr)
     
    Gottes Wort ist mein Schwert und sein Urteil wird meine Rache sein!

  4. #4
    CPoly CPoly ist offline Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.445
    Zitat Zitat von meste Beitrag anzeigen
    ... danke vorerst für deine Antwort aber wei funktioniert es bei MSDN.
    Wenn man dort einen Beitrag schreibt und dann mitten drin auf x klickt kommt die meldung.
    Wenn man aber auf speichern klickt kommt keine Meldung.
    Das ist hier im Forum genauso. Aber da wird nur der Standard Dialog vom Browser angezeigt. Und es wird auch nichts zum Server gesendet.

    Das was du vor hast geht so nicht, weil wenn du was zum Server sendest, während das Fenster geschlossen wird, dann kommt das möglicherweise beim Server nicht an (race condition).

    Du musst also entweder:

    -Eine Verbindung zum Server offen halten (z.B. long polling oder websocket) und wenn diese Verbindung geschlossen wird, ist der Nutzer offline

    -Den Nutzer einen Heartbeat senden lassen (z.B. alle 10 Sekunden). Wenn du 10 Sekunden lang nichts von ihm hörst, ist er offline
     

  5. #5
    Avatar von meste
    meste meste ist offline Mitglied Gold
    Registriert seit
    Dec 2003
    Beiträge
    173
    ... gibt es vielleicht ein Sample bzgl. Heartbeat wo ich mir den Ansatz anschauen kann.

    Danke und Lg
     
    Gottes Wort ist mein Schwert und sein Urteil wird meine Rache sein!

  6. #6
    CPoly CPoly ist offline Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.445
    Sowas in der Art

    Code javascript:
    1
    2
    3
    
    setInterval(function() {
        //Hier AJAX request absetzen
    }, 5000);


    Auf dem Server dann ein Update auf die Tabelle (das ist MySQL spezifisches SQL, musst du auf MS anpassen). Das Update auch bei jedem normalen Seitenaufruf machen.

    Code sql:
    1
    
    UPDATE users SET last_beat = NOW() WHERE id = 'foo';


    Alle Nutzer, die online sind

    Code sql:
    1
    
    SELECT * FROM users WHERE last_beat + INTERVAL 6 SECOND > NOW();
     

  7. #7
    Avatar von meste
    meste meste ist offline Mitglied Gold
    Registriert seit
    Dec 2003
    Beiträge
    173
    Hallo CPoly,
    danke für das nette Sample, werde mir die vorgehensweise mal umsetzen.

    Lg
    m.e.s.t.e
     
    Gottes Wort ist mein Schwert und sein Urteil wird meine Rache sein!

  8. #8
    Avatar von meste
    meste meste ist offline Mitglied Gold
    Registriert seit
    Dec 2003
    Beiträge
    173
    Hallo cPoly,

    habe das so weit fertig, jetzt habe ich noch eine Frage bzw. ein Problem.
    Wie oder wo muss ich die Methode "setInterval" aufrufen damit es danach jede 5 Sek. autom wieder aufgerufen wird.
    Im Body?
    Code :
    1
    
    <body onLoad="setInterval()" ...>

    Habe schon einige Erfolgslose Möglichkeiten bereits probiert.

    Danke und Lg
    m.e.s.t.e
     
    Gottes Wort ist mein Schwert und sein Urteil wird meine Rache sein!

  9. #9
    Avatar von einfach nur crack
    einfach nur crack einfach nur crack ist offline mag Cookies & Kekse
    tutorials.de Premium-User
    Registriert seit
    May 2007
    Ort
    Dresden (Sachsen)
    Beiträge
    1.960
    HTML-Code:
    <script type="text/javascript">
    window.addEventListener('load', function () {
      setIntervall(function () {
        // Request
      }, 5000);
    }, false);
    </script>
     
    Ich mag:
    • positive Bewertungen meiner Beiträge
    • ein Danke für meine hilfreichen Beiträge

    Dabei kann ich dir helfen: PHP --- Javascript --- Ruby --- Coffeescript --- CSS --- HTML --- Webtechnologien --- Shell --- UNIX

    ... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.

  10. #10
    Avatar von meste
    meste meste ist offline Mitglied Gold
    Registriert seit
    Dec 2003
    Beiträge
    173
    Hallo crack!

    danke für dein Beispiel, habe das jetzt mit ScriptManager, UpdatePanel, und Timer realisiert.
    Trotzdem danke für die schnelle Antwort.


    Lg
    m.e.s.t.e
     
    Gottes Wort ist mein Schwert und sein Urteil wird meine Rache sein!

Ähnliche Themen

  1. Antworten: 11
    Letzter Beitrag: 25.05.05, 14:40
  2. nochmal Browser schließen
    Von ptolein im Forum Javascript & Ajax
    Antworten: 4
    Letzter Beitrag: 04.02.05, 12:53
  3. Browser schließen
    Von Rip van Winkle im Forum Javascript & Ajax
    Antworten: 9
    Letzter Beitrag: 29.10.02, 08:45
  4. [mx] browser schließen
    Von Rip van Winkle im Forum Flash Plattform
    Antworten: 4
    Letzter Beitrag: 25.10.02, 15:31
  5. Browser schließen OHNE Abfrage...
    Von tomecdark im Forum Javascript & Ajax
    Antworten: 6
    Letzter Beitrag: 29.01.02, 23:17