【问题标题】:How to display the current page even after clicking browsers back button单击浏览器后退按钮后如何显示当前页面
【发布时间】:2012-02-13 03:01:52
【问题描述】:

即使在用户点击浏览器的返回按钮后,是否可以继续显示相同的页面?

它就像一个多步骤表单,在提交时会重定向到结果页面,一旦提交表单,我不希望用户能够使用浏览器的后退按钮导航回之前的任何页面.所以我想在点击后退按钮时继续向用户显示相同的结果页面。只是单击后退按钮时的 URL 可能会更改为历史记录中以前的 URL,但我不希望用户返回到以前的任何页面。

如果可能的话,有人可以建议我如何实现这一目标。

编辑:假设某个过程有 3 个步骤,然后生成的页面如 ../step1../step2../step3../resulting page。用户可以使用后退和前进按钮玩这些步骤,但是一旦提交了第 3 步并且用户位于../resulting page,我希望用户只显示前一个显示页面的 URL,同时保持结果页面打开。

【问题讨论】:

  • 我讨厌听起来居高临下,但简单的Google search 会返回大量答案。你试过这些结果吗?
  • @ChristianVarga:“继续点击返回并查看同一页面”结果?不,我没有遇到过类似的情况。
  • 你从错误的方向思考它。你甚至点击了我链接到你的搜索结果吗?这些解决方案解决了您的确切问题,但不是您考虑的方式:)
  • @ChristianVarga:我想要的是将前一页的 URL 显示为用户访问过的 URL,但保持显示的结果页面相同。假设某个过程有 3 个步骤,然后生成的页面如 ../step1../step2../step3../resulting page。用户可以使用后退和前进按钮来玩这些步骤,但是一旦提交了第 3 步并且用户位于../resulting page,我希望用户只显示上一个显示页面的 URL,同时保持结果页面处于打开状态。跨度>

标签: javascript jquery


【解决方案1】:

是的,您可以使用以下 javascript 代码

function backButtonOverride()
{
    setTimeout("backButtonOverrideBody()", 1);
}

function backButtonOverrideBody()
{
    // Works if we backed up to get here
    try
    {
        window.history.forward(1);
    } 
    catch (e)
    {
        // OK to ignore
    }
    // Every quarter-second, try again. The only
    // guaranteed method for Opera, Firefox,
    // and Safari, which don't always call
    // onLoad but *do* resume any timers when
    // returning to a page
    setTimeout("backButtonOverrideBody()", 1000);
}

if (window.addEventListener) // W3C standard
{
    window.addEventListener('load', backButtonOverride, false); // NB **not** 'onload'
}
else if (window.attachEvent) // Microsoft
{
    window.attachEvent('onload', backButtonOverride);
}

【讨论】:

    【解决方案2】:

    当您发现自己在想“我不希望用户...”时,您应该立即停下来。用户负责。他们应该能够做任何他们想做的事情。试图阻止他们做某事类似于告诉他们该做什么。

    相反,您只需在他们做某事时做出适当的反应。在这种情况下,如果他们使用后退按钮,那么您应该做一些适当的事情。首先,您应该设计您的应用程序,以便如果他们在完成该步骤后重新请求页面,它会执行类似将他们重定向到其他地方的操作。

    其次,你需要将缓存过期,这样当他们回去的时候,页面就过期了,不会在不刷新页面的情况下重新显示。

    因此,如果页面已完成,并且重新请求了上一步,您只需将它们重定向回适当的页面。您通常通过在页面中设置某种唯一键来执行此操作,这样您就可以知道重新请求以前完成的页面。

    【讨论】:

      【解决方案3】:

      您不能修改浏览器的后退按钮,因为它是内置的。

      【讨论】:

      • 我在想是否可以以某种方式实现问题中提出的功能。我不想更改浏览器后退按钮的内置功能。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-04
      • 1970-01-01
      • 1970-01-01
      • 2013-06-23
      • 2012-12-08
      • 1970-01-01
      相关资源
      最近更新 更多