Здесь я столкнулся с проблемой с приведенным ниже кодом, который я написал для обнаружения browser's close event
, чтобы сделать пользователя logged out
с веб-сайта.
Но, к сожалению, это событие также срабатывает на Refresh
:(.
Window.addWindowClosingHandler(new Window.ClosingHandler() {
public void onWindowClosing(Window.ClosingEvent closingEvent) {
closingEvent.setMessage("Do you really want to close the page?");
}
});
Да я прошел GWT обнаруживает обновление браузера в CloseHandler
Но никаких положительных результатов я там не обнаружил.
Согласно GWT Window.ClosingEvent API класса:
Fired just before the browser window closes or navigates to a different site.
Но у меня все еще есть надежда, что мы сможем обнаружить browser refresh
.
Кто-нибудь может намекнуть по этому поводу?
1 ответ
Невозможно узнать, вызывается ли Window.ClosingEvent
для обновления или закрытия браузера. Но если ваша проблема заключается только в том, чтобы определить, был ли браузер закрыт, вы можете использовать файлы cookie сеанса.
Вот один служебный класс, который может вам помочь. Просто позвоните по приведенным ниже линиям в своем 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;
}
}
Похожие вопросы
Связанные вопросы
Новые вопросы
events
Событие - это способ предоставления классом уведомлений слушателям, когда происходит конкретная вещь.