Vaadin onbeforeunload событие - PullRequest
2 голосов
/ 18 июня 2019

Есть ли какое-либо событие из коробки Vaadin 10 (и выше), похожее на window.onbeforeunload в JavaScript?Я пытался использовать onDetach () или beforeLeave (), но он работает только внутри пользовательского интерфейса, и когда пользователь перезагружает страницу или закрывает страницу, он не работает.

1 Ответ

1 голос
/ 19 июня 2019

Вы можете использовать подход, описанный в https://vaadin.com/forum/thread/17523194/unsaved-changes-detect-page-exit-or-reload, который уже был предложен в комментарии.

В то же время я призываю вас быть очень осторожными с beforeunload событиями, так как они в некоторых ситуациях запускаются, даже если пользователь фактически не уходит со страницы.

Наиболее распространенным случаем является случай, когда пользователь щелкает ссылку, которая начинает загрузку. В этом случае браузер сработает даже сразу, когда пользователь нажмет на ссылку. Чуть позже, когда браузер получит заголовки ответа, он обнаружит, что это загрузка, а не новая HTML-страница для отображения. Конечным результатом является то, что beforeunload был запущен, но предыдущая страница все еще продолжает работать.

Если вы хотите использовать событие для очистки, то лучшим подходом сегодня, вероятно, является комбинация события unload, а затем использование нового маякового API для уведомления сервера о том, что пользователь фактически ушел. Интеграция этого в приложение Vaadin потребует немного больше JavaScript, но у него есть то преимущество, что оно действительно будет работать.

...