【问题标题】:At IE7, action "javascript:history.back()" in JSP jump back to main page, not previous viewed page在 IE7 中,JSP 中的操作“javascript:history.back()”跳回主页面,而不是之前查看的页面
【发布时间】:2010-08-11 06:11:30
【问题描述】:

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

【问题讨论】:

    标签: javascript jsp internet-explorer-7 firefox3.5


    【解决方案1】:

    我更喜欢使用

    history.go(-1);
    

    而不是

    history.back();
    

    【讨论】:

    • 我把它从history.back()改成了history.go(-1),IE7和FF3.5都可以用。
    【解决方案2】:

    我打赌您正在使用 AJAX 应用程序。问题是 IE7 不会更新哈希更改或任何 AJAX 操作的历史堆栈。不过有办法解决,我个人推荐http://www.mikage.to/jquery/jquery_history.html

    【讨论】:

      【解决方案3】:

      不要为此使用 JavaScript。只需让 JSP/Servlet 记住前一页并将其 URL 放入 &lt;form action&gt; 即可。您可以通过HttpServletRequest#getRequestURL() 获取请求 URL。

      或者,更好,将错误显示在与原始表单相同的页面中。这样,在采取额外操作返回到没有错误消息的页面之前,您无需打扰最终用户记住所有错误。是的,这是糟糕的用户体验。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-12-20
        • 1970-01-01
        • 2013-10-13
        • 2015-05-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-18
        相关资源
        最近更新 更多