2011-05-10 63 views
1

我们的应用程序禁止出于以下原因返回。 基本上,因为这就是我们的应用程序的工作方式(JSF以facelets作为GUI) 您必须在欢迎站点上输入,一旦您选择了应用程序流程,您只能在告诉应用程序时离开/中止(例如,按下按钮)。如果您只是浏览例如在地址栏中输入“example.com”,您的流量状态将被保存,一旦您重新登录,您可以恢复工作。回去只有当它是专门用这样的“后退”提交按钮设计时才可能的。 当然,用户不断按下'后退'按钮(我也这样做),他们不断收到'错误:会话不同步'。这是一个学习过程,几年前我们只是禁用了后退按钮来清楚说明。可悲的是,这不再被支持。 因此,不是以困难的方式教导用户并强迫他重新登录,有没有一些很好的选择我缺少?在Firefox和IE中禁用/禁用后退按钮的替代方案

我发现this链接应该提供3种方法来禁用后退按钮 - 但实际上它只是进一步证实了这样一个事实,即不可能以半好的方式做到这一点。

当用户试图去到以前的页面,您可以他重定向到他应该是在换句话说页面
+1

[禁用浏览器上的返回按钮](http://stackoverflow.com/questions/87422/disabling-back-button-on-the-browser) – 2011-05-10 17:28:14

+0

感谢您指出了这一点(对于其他访问者) 。当然,我阅读了这篇文章,但是人们认为最好的做法是“不要打破后退按钮”。我必须打破它 - 保持良好用户体验的最佳选择是什么? – Toskan 2011-05-11 09:18:34

回答

2

赶上“不同步”和重定向他

+0

问题在于重定向。我们的应用不允许重定向,例如你不能只从谷歌跳转到页面C,一旦浏览完毕,你总是必须从页面A开始(我们存储一个请求作用域连续编号)。但是,我们可以通过捕获非法请求并重定向到正确的页面(并添加新的请求编号)来实现此行为。看起来有点危险。 – Toskan 2011-05-13 08:43:07

+0

然后当你看到有人去C页面,当他不应该(从外部链接或后退按钮)重定向他到页面A – 2011-05-14 10:26:23

+0

只是似乎没有告诉用户更好的错误信息,说明返回被禁用...你点击返回并结束你刚刚在同一页面。 – Toskan 2011-06-10 11:57:49

1

你可能会在这里找到一个可行的解决方案How do I insert an entry into browsing history via JavaScript 通过在浏览器的历史记录中插入一个额外的步骤(可能是指向带有查询字符串参数的当前页面的链接,导致给用户一个漂亮的大红色框消息),或者您可以尝试将事件处理程序附加到OnBeforeUnload事件,用户在试图离开页面时会得到一个确认对话框(当点击提交按钮时,您想要删除该处理程序)。

+0

实际上,我认为浏览器历史记录中的更改不会(应该?!?)起作用,只要想象一下,当您进入网站时,有人在您的历史记录中添加了一百万条记录。 – Toskan 2011-05-11 09:36:59