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