使用 JavaScript 按下浏览器后退按钮时重定向到 URL

Posted

技术标签:

【中文标题】使用 JavaScript 按下浏览器后退按钮时重定向到 URL【英文标题】:Redirect to a URL when browser back button is pressed using JavaScript 【发布时间】:2020-09-12 07:17:13 【问题描述】:

我做了一些研究,但找不到解决方案。

我有一个landingpage.html。当用户按下浏览器中的后退按钮时,我想将用户重定向到 anotherpage.html。

所以我试过这段代码:

let currentUrl = location.href;
history.replaceState('', '', 'anotherpage.html');
history.pushState('', '', currentUrl);

它的工作方式并不像预期的那样:当按下后退按钮时,浏览器地址栏会显示 anotherpage.html 页面,但不会发生实际的重定向。

【问题讨论】:

【参考方案1】:

您可以为popstate 添加一个事件侦听器,这样当用户按下它时它就会触发并且您可以在该页面中加载。

addEventListener('popstate',()=>location.reload())

【讨论】:

@Merger 如果您仍然需要解释为什么您的代码无法按预期工作,这可能会有所帮助:***.com/a/12917772/746736【参考方案2】:

您可以使用主对象窗口进行导航。

window.location.href = "html page path";

要触发您的按钮,请订阅键盘键

document.addEventListener('keypress', (e) => 
  if (e.key === 'your key name') window.location.href = "html page path";
);

【讨论】:

没有使用浏览器后退按钮触发按键...它不在窗口或document 上下文中 更改浏览器返回按钮没有意义,浏览器已经返回上一页。修改它会使用户感到困惑。 我同意,但这就是问题所在【参考方案3】:

你试过location.href='<url>' 你也可以在这里查看w3schools

【讨论】:

【参考方案4】:

不确定是否允许在每个浏览器上使用

function hackBackButton()
location.href = "anotherpage.html";


history.back = hackBackButton();

【讨论】:

另一个简单的事情可能是拦截页面的卸载。

以上是关于使用 JavaScript 按下浏览器后退按钮时重定向到 URL的主要内容,如果未能解决你的问题,请参考以下文章

当用户尝试按下后退按钮或使用 Firefox 时,如何添加警报? (Javascript)

当用户在 JSF 中注销后单击后退按钮时重定向到登录页面 [重复]

在移动 Safari 中按下后退按钮后,Javascript 停止在 iframe 中执行

Codeigniter 按下注销按钮并禁用后退浏览器按钮

servlet会话,注销后,按下浏览器的后退按钮时,再次显示安全页面[重复]

为啥在laravel中按下浏览器的后退按钮时过滤器不起作用?