如何在单击浏览器后退按钮后显示当前页面

时间:2012-02-13 03:01:52

标签: javascript jquery

即使用户点击浏览器后退按钮,是否可以继续显示同一页面?

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

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

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

3 个答案:

答案 0 :(得分:5)

是的,您可以使用以下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);
}

答案 1 :(得分:3)

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

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

其次,您需要使缓存过期,以便当它们返回时,页面已过期,并且在不刷新页面的情况下不会重新显示。

因此,如果页面已完成,并且重新请求了上一步骤,则只需将它们重定向回相应的页面即可。您通常通过在页面中设置某种唯一键来执行此操作,以便您可以确定重新请求先前已合并的页面。

答案 2 :(得分:0)

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

相关问题