Der Weg, um dies zu tun, ist die Verwendung der Window.addWindowClosingHandler
wie @Carnell und @BillLyons sagte. 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).
Im Anschluss gibt es eine Dienstprogrammklasse, die Ihnen helfen kann. Rufen Sie einfach die folgenden Zeilen in Ihrem onModuleLoad
zum Testen an.
Die Verwendung Beispiel:
@Override
public void onModuleLoad() {
if (BrowserCloseDetector.get().wasClosed()) {
GWT.log("Browser was closed.");
}
else {
GWT.log("Refreshing or returning from another page.");
}
}
Die Utility-Klasse:
import com.google.gwt.user.client.Cookies;
import com.google.gwt.user.client.Window;
public class BrowserCloseDetector {
private static final String COOKIE = "detector";
private static BrowserCloseDetector instance;
private BrowserCloseDetector() {
Window.addWindowClosingHandler(new Window.ClosingHandler() {
public void onWindowClosing(Window.ClosingEvent closingEvent) {
Cookies.setCookie(COOKIE, "");
}
});
}
public static BrowserCloseDetector get() {
return (instance == null) ? instance = new BrowserCloseDetector() : instance;
}
public boolean wasClosed() {
return Cookies.getCookie(COOKIE) == null;
}
}
Duplikat dieser Frage. http://stackoverflow.com/questions/875380/how-to-tell-the-difference-between-a-page-refresh-and-closing-a-page –
Diese Frage ist kein Duplikat von diesem. –
Die Antwort beantwortet diese Frage zwar - Sie können jedoch nicht feststellen, wann der Benutzer Ihre Website nicht mehr verwendet. Die nächste Möglichkeit besteht darin, festzustellen, wann der Benutzer für einen bestimmten Zeitraum keine neue Anfrage an die Site gesendet hat. – Quentin