2010-07-29 117 views

回答

6

您无法禁用用户浏览器上的后退按钮。这是浏览器的基本功能,不能被覆盖。

可以使得您的应用程序中断(显示错误消息,要求用户重新开始)如果用户返回。这样做是一个坏主意,因为它确实承认在设计应用程序时没有考虑后退按钮。每个应用程序,甚至订单,购物车,网上银行等,如果设计正确应该可以使用后退按钮。如果他们不能,那么应用程序开发人员就会失败。我已经看到了故意破坏后退按钮使用

一种方法是通过在应用程序中的每个URL令牌,每个表单中。每个页面都会重新生成令牌,一旦用户加载新页面,前一页中的任何令牌都将失效。当用户加载一个页面时,该页面只会显示正确的标记(已被赋予前一页上的所有链接/表单)传递给它。

我的银行提供的网上银行申请就是这样。如果您完全使用后退按钮,则不会再有链接工作,也无法再进行页面重新加载 - 相反,您会看到一条通知,告诉您无法返回,并且必须重新开始。

现在,我认为这是一种处理问题的懒惰方式。这样做的网上银行应用程序会这样做,因为如果他们严格限制某人可能到达给定页面的情况的数量,理论上更容易保护应用程序。这无疑是一条捷径相比,使应用程序工作正常用户应该期待的方式,但那些谁设计的网上银行应用较少关注可用性和更侧重于减少潜在的攻击媒介。他们也可能因为不得不处理真正古老的计算机系统和界面而受到压力。

5

你不准modifywindow.history entrys。如果您尝试设置window.history.length,大多数浏览器都会抛出异常。

但是,当用户改掉离开当前页面,您可以做一个更顺畅的事情与onbeforeunload

window.onbeforeunload = function(){ 
    return "are you sure?"; 
}; 

,将触发一个确认框(包括历史前进/后退)。

+0

它更像是'return confirm(“你确定吗?”);';) – Reigel 2010-07-29 06:36:17

+8

@Reigel:不需要,你不需要显式地调用confirm(),事件处理程序负责处理。 – jAndy 2010-07-29 06:37:35

+0

优秀的答案。 – Eric 2014-12-29 16:08:24