可能重复:
如何停止重新提交表单后退和刷新按钮?
禁用浏览器的后退按钮
环境:jQuery,richfaces
如何在用户界面的某些页面上禁用后退按钮导航(在菜单栏中).
您无法在用户的浏览器上禁用后退按钮.这是浏览器的基本功能,无法覆盖.
如果用户返回,您可以使应用程序中断(显示错误消息,要求用户重新开始).这样做是个坏主意,因为在您设计应用程序时,您确实没有考虑后退按钮.每个应用程序,甚至订单表格,购物车,网上银行等,如果设计正确,都应该能够使用后退按钮.如果他们不能,那么应用程序开发人员就会失败.
我故意打破后退按钮使用的一种方法是在应用程序内的每个URL上以及每个表单中传递一个令牌.令牌在每个页面上重新生成,一旦用户加载新页面,前一页面中的任何令牌都将失效.当用户加载页面时,页面将仅显示是否向其传递了正确的令牌(已提供给上一页上的所有链接/表单).
我银行提供的网上银行应用就像这样.如果您完全使用后退按钮,则不再有链接可用,也无法再进行页面重新加载 - 相反,您会看到一条告知您无法返回的通知,而您必须重新开始.
现在,我认为这是处理问题的一种懒惰方式.执行此操作的在线银行应用程序可以执行此操作,因为如果它们严重限制某人可能到达给定页面的环境数量,理论上更容易保护应用程序.与使应用程序以用户期望的方式正常工作相比,这绝对是一个捷径,但设计在线银行应用程序的人不太关注可用性,而是更专注于减少潜在的攻击媒介.他们也可能因为必须处理真正古老的计算机系统和接口而感到压力.
你不允许modify的window.historyentrys.如果您尝试设置window.history.length大多数浏览器将抛出异常.
但你可以用onbeforeunload类似的东西做一个更顺畅的事情
window.onbeforeunload = function(){
return "are you sure?";
};
Run Code Online (Sandbox Code Playgroud)
当用户试图离开当前页面时(包括,历史后退/前进),将触发确认框.