在IE7上,行动“;javascript:history.back();在JSP中,跳回主页面,而不是以前查看的页面

在IE7上,行动“;javascript:history.back();在JSP中,跳回主页面,而不是以前查看的页面,javascript,jsp,internet-explorer-7,firefox3.5,Javascript,Jsp,Internet Explorer 7,Firefox3.5,下面是一个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

下面是一个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>

标题


我打赌您使用的是AJAX应用程序。问题是IE7不会在哈希更改或任何AJAX操作时更新历史堆栈。尽管有很多解决方法,但我个人还是建议您使用AJAX应用程序。问题是IE7不会在哈希更改或任何AJAX操作时更新历史堆栈。尽管有很多解决方法,但我个人还是推荐我更喜欢使用的

history.go(-1);
而不是

history.back();
我更喜欢使用

history.go(-1);
而不是

history.back();

不要为此使用JavaScript。只需让JSP/Servlet记住上一页,并将其URL放在
中即可。您可以通过
HttpServletRequest#getRequestURL()
获取请求URL


或者,更好的方法是在与原始表单相同的页面中显示错误。这样,您就不需要麻烦最终用户记住所有错误,然后再采取额外的操作返回到没有错误消息的页面。是的,这是糟糕的用户体验。

不要为此使用JavaScript。只需让JSP/Servlet记住上一页,并将其URL放在
中即可。您可以通过
HttpServletRequest#getRequestURL()
获取请求URL


或者,更好的方法是在与原始表单相同的页面中显示错误。这样,您就不需要麻烦最终用户记住所有错误,然后再采取额外的操作返回到没有错误消息的页面。是的,这是糟糕的用户体验。

我将其从history.back()更改为history.go(-1),它在IE7和FF3.5上都能工作。我将其从history.back()更改为history.go(-1),它在IE7和FF3.5上都能工作。