Ich schreibe eine Anwendung in GWT und ich muss erkennen, wenn ein Benutzer von meiner Anwendung weg navigiert oder wenn er das Browserfenster schließt (onUnload-Ereignis) und eine Abmeldung durchführt (Sitzungsinvalidierung und einige andere Bereinigungsaufgaben). Die Abmeldeaktion wird von einem Servlet ausgeführt.
Ich mache dies gerade, indem ich mich in das Ereignis onUnload () eingehe und ein neues Fenster öffne, das auf das Logout-Servlet zeigt.
Gibt es einen besseren Weg, dies zu tun? Alle anderen Vorschläge sind willkommen.
Sieht so aus, als hätte GWT genau dafür ein Ereignis.
Sieht so aus, als müssten Sie ein ClosingHandler
Warum nicht einfach ein sehr kurzlebiges Session-Cookie erstellen, das bei jedem Laden der Seite zurückgesetzt wird, und dann ein Tracking-Cookie hinzufügen. Wenn der Benutzer zurückkehrt, bemerken Sie den Tracking-Cookie, aber keinen Session-Cookie. Beenden Sie die Sitzung und löschen Sie an diesem Punkt alles.
Pop-up-Blocker verhindern, dass Ihre Sitzung bereinigt wird, wenn sie das geöffnete onUnload-Fenster blockiert, da dies von Spammern verwendet wird.
So funktioniert das Closing-Event:
%Vor%Dann gibt GWT dem Benutzer die Möglichkeit, Ja oder Nein zu sagen. Natürlich können Sie auch einen Test hinzufügen, um zu sehen, ob sie nicht gespeicherte Daten haben oder was immer Sie wollen. Wenn Sie die Nachricht nicht setzen oder auf Null setzen, wird nichts unternommen.
Der Weg dahin ist, die Window.addWindowClosingHandler
wie @Carnell und @BillLyons zu verwenden. Aber ich verwende eine zusätzliche Technik, um zu erkennen, ob der Browser geschlossen wurde oder ob die Seite erneut besucht wird (durch Auffrischen oder Zurück-Navigation).
Folgend gibt es eine Hilfsklasse, die Ihnen helfen kann. Rufen Sie einfach die Zeilen unten in Ihrem onModuleLoad
zum Testen auf.
Das Anwendungsbeispiel :
%Vor%Die Dienstprogrammklasse :
%Vor%Tags und Links javascript gwt logout onunload