即使用户点击浏览器后退按钮,是否可以继续显示同一页面?
它就像一个多步骤表单,在提交时会重定向到结果页面,一旦表单提交,我不希望用户能够使用浏览器返回按钮导航回任何以前的页面。因此,我希望在单击后退按钮时向用户显示相同的结果页面。只需点击后退按钮的URL就可以从历史记录更改为以前的URL,但我不希望用户返回到之前的任何页面。
如果可能的话,有人可以建议我如何实现这一目标。
编辑:假设某个流程有3个步骤,然后生成的页面如../step1
,../step2
,../step3
,../resulting page
。用户可以使用后退和前进按钮播放这些步骤,但是一旦提交了步骤3并且用户位于../resulting page
,我希望用户仅在保持结果页面打开的同时显示先前显示的页面的URL。
答案 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)
您无法修改浏览器的后退按钮,因为它是内置的。