Вы можете использовать подход, описанный в https://vaadin.com/forum/thread/17523194/unsaved-changes-detect-page-exit-or-reload, который уже был предложен в комментарии.
В то же время я призываю вас быть очень осторожными с beforeunload
событиями, так как они в некоторых ситуациях запускаются, даже если пользователь фактически не уходит со страницы.
Наиболее распространенным случаем является случай, когда пользователь щелкает ссылку, которая начинает загрузку. В этом случае браузер сработает даже сразу, когда пользователь нажмет на ссылку. Чуть позже, когда браузер получит заголовки ответа, он обнаружит, что это загрузка, а не новая HTML-страница для отображения. Конечным результатом является то, что beforeunload
был запущен, но предыдущая страница все еще продолжает работать.
Если вы хотите использовать событие для очистки, то лучшим подходом сегодня, вероятно, является комбинация события unload
, а затем использование нового маякового API для уведомления сервера о том, что пользователь фактически ушел. Интеграция этого в приложение Vaadin потребует немного больше JavaScript, но у него есть то преимущество, что оно действительно будет работать.