javascript 有没有办法让“返回”按钮重定向到另一个网页,而不是重定向到上一页?

qxsslcnc  于 2023-03-21  发布在  Java
关注(0)|答案(1)|浏览(167)

同样的事情可以用刷新按钮来完成吗?我问是因为我创建了一个页面来显示用户保存到列表中的项目,这些项目可以通过点击删除按钮来删除。一旦发生这种情况,页面就会刷新(因为该项目从MySQL数据库中删除),当你点击“返回”时,浏览器会转到上一个有该项目的页面,这对我来说是个问题。我能想到的唯一解决方案是将“返回”重定向到另一个页面,特别是用户来自的页面。
请帮助我在告诉我如何重定向到另一个页面后,点击“返回”。

zpgglvta

zpgglvta1#

你可以用History API来实现。
根据您的描述,用户的历史记录如下:
/foo -> /bar -- remove item --> /bar#refreshed
现在您希望用户在单击“返回”按钮后返回到/foo,因此:
/foo <-- go back -- /bar#refreshed .
IMO的最佳解决方案是您不应该刷新/bar页面。而是 AJAX 更新包含数据的页面部分。如果地址栏需要更新,您可以使用

history.replaceState({}, '', '/bar#refreshed)

这样只会改变地址栏的内容,但不会触发真实的的页面导航/刷新,因此您的用户的历史记录变成了/foo -> /bar#refreshed,因为您已经用/bar#refreshed替换了/bar。当用户点击“返回”按钮时,他们只是回到/foo
如果您不能只更新页面的一部分,而必须重新加载/bar页面,那么一个次优解决方案如下所示。
在刷新页面之前,您可以调用:

history.replaceState({}, '', '/foo')

这样用户的历史记录就变成了:

[before] /foo -> /bar -- remove item --> /bar#refreshed
                   |
                   | # /bar is replaced by /foo
                   V 
[after]  /foo -> /foo -- remove item --> /bar#refreshed

这样,当用户点击“返回”时,他们仍然会返回到/foo。虽然历史包含一个额外的/foo节点,但仍然可以完成任务。

相关问题