Способ сделать это - использовать Window.addWindowClosingHandler
, как сказали @Carnell и @BillLyons. Но я использую дополнительную технику, чтобы определить, был ли браузер закрыт или страница посещается снова (путем обновления или обратной навигации).
После этого есть полезный класс, который может вам помочь. Просто позвоните по линиям ниже в вашем onModuleLoad
, чтобы проверить.
Пример использования :
@Override
public void onModuleLoad() {
if (BrowserCloseDetector.get().wasClosed()) {
GWT.log("Browser was closed.");
}
else {
GWT.log("Refreshing or returning from another page.");
}
}
Утилита класса :
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;
}
}