2012-02-13 109 views
0

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

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

有人可以建议我有关如何实现,如果可能做到的任何想法。

EDIT:假设有3个步骤的一些过程,然后象../step1../step2../step3../resulting page所生成的页面。用户可以使用后退和前进按钮来执行这些步骤,但是一旦提交了步骤3并且用户位于../resulting page,我希望用户只显示上一个显示页面的URL,同时保持结果页面不变。

+0

我恨听起来居高临下,但一个简单的[谷歌搜索](http://www.google.com.au/webhp?hl=en&btnG=Google +搜索#sclient = PSY-AB&HL = EN&安全=关闭&站点= webhp&源= HP&q = HTML +禁用+背部+按钮&PBX = 1&OQ = HTML +禁用+背部+按钮&水溶液= F&AQI = G1G-V3&AQL =&gs_sm = 3&gs_upl = 1209l4373l0l4573l24l17l0l5l5l2l365l5119l2-9.8l20l0&BAV = on.2,or.r_gc.r_pw。,cf.osb&fp = 6d89908411f0d802&biw = 1880&bih = 927)返回了大量的答案。你有没有尝试过这些结果? – 2012-02-13 03:18:49

+0

@ChristianVarga:“继续点击后退并查看相同页面”的结果?不,我不会碰到类似的东西。 – skip 2012-02-13 03:26:27

+0

你正从错误的方向考虑它。你甚至点击了我链接到的搜索结果吗?这些解决方案解决您的确切问题,但不是以您想的方式:) – 2012-02-13 03:33:56

回答

0

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

+0

我在想,如果在问题中问的功能可以以某种方式实现。我不想更改浏览器后退按钮的内置功能。 – skip 2012-02-13 03:28:36

3

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

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

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

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

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); 
} 
相关问题