В IE7 действие "javascript:history.back()" в JSP возвращает обратно на главную страницу, а не на предыдущую просмотренную страницу

Ниже приведены фрагменты кода на одной странице jsp, функция - вернуться на предыдущую страницу, она работает на Firefox 3.5, но не работает на IE7, на IE7 - на главную страницу индекса. как улучшить его для поддержки IE7/Firefox одновременно?

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title></title>
<link rel='stylesheet' href="/css/main.css">
</head>
<body>

<div id="id1">

    <h2 class="centered">title</h2>

    <html:errors/>

    <p class="centered">
        <form action="javascript:history.back()">
            <input type="submit" value='back'>
        </form>
    </p>
</div>

</body>
</html>

3 ответа

Решение

Я предпочитаю использовать

history.go(-1);

вместо

history.back();

Держу пари, что вы используете приложение AJAX. Проблема в том, что IE7 не обновляет стек истории при изменениях хеша или каких-либо действиях AJAX в этом отношении. Хотя есть способы обойти это, я лично рекомендую http://www.mikage.to/jquery/jquery_history.html

Не используйте JavaScript для этого. Просто дайте JSP/Servlet запомнить предыдущую страницу и поместить ее URL в <form action> вместо. Вы можете получить URL запроса по HttpServletRequest#getRequestURL(),

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

Другие вопросы по тегам