【问题标题】:JavaScript remove last History entries with same URLJavaScript 删除具有相同 URL 的最后一个历史记录条目
【发布时间】:2022-01-01 22:34:05
【问题描述】:

我有一个在服务器端经过部分验证的 POST 表单(简单的 HTML,提交时不涉及 JS)。当我提交它时,如果有任何错误,服务器可能会返回重定向。假设表单在/myform URI 上,但如果服务器发现数据错误,它将重定向到/myform?error。在此操作多次并最终正确提交后,用户可能希望使用其浏览器的back 按钮。但这会让用户经历提交尝试失败的所有步骤,例如/myform?success -> /myform?error -> /myform -> /home.

如何防止这种情况发生?我的猜测是删除最后一个具有相同 URI 的 History 条目。我该如何做到这一点?或者还有其他更好的方法吗?我将服务器端渲染与 Spring (Java) 一起使用,因此动态验证并不是真正的用例选项。提前谢谢!

【问题讨论】:

    标签: javascript spring forms server-side-rendering history


    【解决方案1】:

    出于安全和隐私原因,您无法查看或修改用户的浏览器历史记录。

    但是,如果您愿意使用 JavaScript,您可以使用 History API 来替换当前页面在成功提交时的状态:

    history.replaceState(null, 'Page title', '/form-url');
    

    https://developer.mozilla.org/en-US/docs/Web/API/History_API

    【讨论】:

    • 好的,但如果我理解正确,replaceState() 不会删除过多的back 按钮步骤 - 只会使它们具有相同的 URL。我已经这样做了,但用户真的不喜欢点击多次才能返回。也许我可以以某种方式覆盖back 按钮行为以始终返回特定页面...虽然用户可能会从不同页面访问某些表单,但效果并不好。
    猜你喜欢
    • 1970-01-01
    • 2012-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-20
    • 2011-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多