
Prevent Use of the Back Button (in IE)因此,我目前的工作地点的中小企业希望尝试禁用某些页面的"后退"按钮。我们有一个页面,用户可以在其中进行一些选择并将其提交进行处理。在某些情况下,他们必须在另一页上输入评论。 用户发现,如果提交信息并进入带有注释的页面,然后单击返回按钮以返回上一页,则无需输入注释。 我知道有多种解决方案(许多方法要优雅得多,然后禁用后退按钮),但这就是我剩下的。是否可以通过更改"后退"按钮的行为来防止某人返回上一页。 (就像提交->返回错误的sorta一样)。 由于两次发布信息,我无法让它返回到上一页,然后移至当前页面。我只能让它不直接离开当前页面。我用Google搜索了它,但是我只看到帖子说它将始终返回到上一页。我希望有人拥有一些疯狂的功夫js技能,可以使之成为可能。 我了解到每个人都说这是一个坏主意,我同意,但是有时候您只需要按照所告诉的去做。 请勿这样做,请不要这样做。这是不良的界面设计,它会迫使用户的浏览器以他们意想不到的方式运行。 我会将成功阻止后退按钮正常工作的任何脚本都视为黑客,并且我希望IE团队为其发布安全修复程序。 后退按钮是其程序界面的一部分,而不是您的网站。 在您的特定情况下,我认为最好的选择是在页面上添加一个卸载事件,以警告用户是否尚未填写表单。后退按钮将不受影响,并且将警告用户其操作。 不,你注定了。即使您在其他浏览器中弹出页面并隐藏"后退"按钮,也始终会有Backspace键。 营销人员和分析师类型的问题在于,其中一些人不了解网络无状态的基本概念。他们不了解该页面是完全,完全不知道使用该页面的浏览器,并且对浏览器的绝对控制完全超出了网页的功能。 劝阻用户单击"后退"按钮的最佳方法是确保用户按回时您的页面丢失所有数据,例如,注释页面是可以保存数据的唯一点,并且请确实按下返回按钮,他们必须重新做一遍所有事情(考虑实用性:nocache)。 用户肯定会抱怨,但这是存在被抛弃的要求的原因,对吗? 我想出了一个小技巧,可以使用JavaScript禁用后退按钮。我在chrome 10,firefox 3.6和IE9上进行了检查:
我以前见过:
这绝对是一个肮脏的hack,如果可能的话,我将尝试不禁用后退按钮。用户可能仍然可以很轻松地解决它。而且,根据缓存的不同,也无法确定是否将处理服务器代码,或者是否将首先运行带有JavaScript的缓存页面。 所以,是的,使用风险自负:) 您可以访问服务器端的源代码吗?如果是这样,您可以在首页上进行检查,如果信息已经提交,则可以重定向到第二页(显然,您需要使用会话)。在以前的工作中,这就是我们处理多步骤申请(如接受申请中的申请)的方式。
这时,他们可能也足够聪明,可以在评论字段中输入\\'no comment \\'。 您可以尝试强迫人们添加评论,但是您最终可能会得到糟糕的无法使用的软件,使用户烦恼并且仍然无法获得评论。通常,这是退后一步并从用户的angular重新考虑您正在做的事情的好时机。 由于浏览器中javascript的安全隔离,因此您无法更改后退按钮的功能。 也许您可以在用户的??会话中存储一些内容,以表明需要注释,并且应用程序中有任何页面供用户尝试将其重定向到注释页面? 如果用户在看到评论页面时关闭浏览器怎么办? 我知道您在这里没有选择的余地,但是鉴于他们的要求似乎是不可能的... 在用户输入评论之前,您可能只是认为项目未完成。因此,您需要同时跟踪进行中的项目和已完成的项目,并在UI中进行区分,但这可能是最可靠的方法。 还是仅将评论字段放在表单页面上? 您可以将注释移到上一页并将其设置为必填字段吗? 禁用后退按钮将不起作用。 您应该保护应用程序免受双重提交的侵害,而不是破坏用户界面以隐藏该错误。 禁用后退按钮似乎是一种"强力"方法。 另一种选择是,您可以跳到不带命令按钮的模式对话框,引导用户完成工作流程,并在过程完成后关闭对话框。 我看不到此解决方案:
如果要从头开始新的Web应用程序,或者有足够的时间来重做应用程序,则可以使用JavaScript和AJAX来避免浏览器的历史记录,后退和前进功能。
该技术回答了这个问题,但它在几个方面也与最佳实践相矛盾:
在使用此技术之前,请仔细考虑您的要求和您的用户。 您可以防止它们返回上一页。 page1.html:用户单击一个链接,该链接转到page2.html page2.html:用户单击一个调用 的链接 page3.html:用户单击后退按钮并转到page1.html 这可能不适合进行POST,但是您可以通过AJAX将数据发布到Web服务,然后调用location.replace() 作为一种简单的解决方案:试试这个。在其中插入一个更新面板和一个按钮,并使用javascript隐藏它,然后在页面加载时按它。是的,我了解这会导致您的页面重新加载,并且如果禁用了javascript可能无法正常工作,但是可以肯定地帮助您对后退按钮问题做出半个体面的响应。安迪 根本没有可靠的方法可以做到这一点。您不能保证有100%的时间可以阻止用户执行此操作。 考虑到这一点,是否有必要采用极具异国情调的解决方案来禁用"大多数"时间?这由您决定。 祝你好运。 |