【问题标题】:Javascript redirect that breaks back button打破后退按钮的 Javascript 重定向
【发布时间】:2013-08-30 14:49:05
【问题描述】:

根据 StackOverflow 上location.replace(URL) 的许多答案,您可以重定向您的用户,同时将页面保留在后退按钮历史记录中。

我想做相反的事情,所以我使用location.href = URL,但我仍然体验到后退按钮的正确工作:这是为什么?

此外,在 Chrome 和 IE10 中使用 location.replace() 似乎也使后退按钮保持不变。请注意,我不是用location.replace("http://...") 重定向,而是用location.replace("/page.html") 重定向

我想将我的用户从页面重定向到配置向导,而在向导内部,用户不应该能够在页面之间来回切换:相反,按“返回”应该将其重定向到原始页面,在向导之外。

一种解决方案是通过 AJAX 加载向导的页面并使用.html() 注入它们。我们已经以这种方式开发了大部分 Web 应用程序页面,但对于这一特定部分,AJAX 解决方案一直被服务器端开发人员所忽视(看图!)。

我能做什么?

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    你把它们弄错了。 location.replace 替换浏览器历史记录中的当前页面。 location.href 前进到页面。

    看这里...

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

    【讨论】:

    • 我可以对 IE8 中的 location.replace 做些什么 - 它也可以工作吗?感谢您的帮助,现在将测试! :)
    • 是的,一直都是这样,所以您可以放心,它与所有旧浏览器(运行 JS)兼容
    • location.replace() 没有破坏 Chrome 中的后退按钮。我还能回去……
    • 还有别的东西在起作用,因为它对我来说非常有效,而且一直都是这样。如果我在此页面上打开控制台并执行location.replace("http://www.google.co.uk") 然后单击后退按钮,我不会得到这个页面 - 我得到了之前的那个。
    • 我在 setTimeout 中创建了一个带有 location.replace("/hello") 的 HTML。当我用 Chrome 或 IE10 打开它时,我被重定向到一个错误页面。当我点击后退按钮时,我返回到带有重定向的页面。
    【解决方案2】:

    我会在 MDN 上查看 beforeunload 事件:Article

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-08
      • 2012-04-05
      • 2019-07-17
      • 2020-09-12
      • 2017-04-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多