Как заменить содержимое тега div с помощью JavaScript на кнопку назад? - PullRequest
0 голосов
/ 10 ноября 2019

Мой вопрос почти похож на вопрос вопрос здесь.

У меня есть стандартная домашняя страница боковой панели, которая выполняет 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 с предыдущим содержимым, котороебыл там.

...