Мой вопрос почти похож на вопрос вопрос здесь.
У меня есть стандартная домашняя страница боковой панели, которая выполняет ajax для замены текста внутри тега div и отображения контекста. Все отлично работает, кроме кнопки назад. Кнопка «Назад» перенаправляет на страницу входа.
Это то, что я пробовал: (я использую сервлеты)
Без какого-либо javascript, пользователь отправляется в login.jsp на кнопку назад (сессия не аннулирована). Я написал код в login.jsp для перенаправления на домашнюю страницу, когда пользователь уже вошел в систему.
access = Integer.parseInt(session.getAttribute("access").toString());
if (access == 1) {
RequestDispatcher rd = request.getRequestDispatcher("ajaxContent?url=homepage");
rd.forward(request, response);
//ajaxContent is the servlet loads the sidebar. With the content of homepage in div tag.
}
Но кнопка «Назад» просто отображает предыдущую страницу, поэтому код java для проверки сеанса никогда не выполняется.
Я попытался добавить функцию onbeforeunload, чтобы предупредить пользователя о кнопке возврата.
window.onbeforeunload = function () {
return "Your work will be lost.";
};
Но при сохранении форм также отображается предупреждение «Ваши данные не будут сохранены», хорошоэто не очень хороший способ принимать формы, верно?
Наконец, я попробовал функцию history.pushState, чтобы заменить историю при каждом вызове функции ajax.
window.history.pushState({}, 'Previous','www.example.com/ajaxContent?url=homepage');
Но это просто заменяет URL в браузере, но не загружает страницу,При нескольких щелчках он снова отображает login.jsp. (очевидно)
Я также нашел эту страницу с исходным кодом для полного отключения кнопки назад , но я бы предпочел сделать кнопку возврата заменой тега div с предыдущим содержимым, котороебыл там.