Javascript 防止使用后退按钮(在IE中)

Javascript 防止使用后退按钮(在IE中),javascript,internet-explorer,back-button,Javascript,Internet Explorer,Back Button,因此,我目前工作地点的中小企业希望尝试禁用某些页面的后退按钮。我们有一个页面,用户在其中做出一些选择并将其提交以进行处理。在某些情况下,他们必须在另一个页面上输入注释 用户发现,如果他们提交信息并进入带有注释的页面,然后点击“上一步”按钮返回上一页,则不必输入注释 我知道有几种不同的解决方案(其中许多比禁用后退按钮要优雅得多),但这就是我剩下的。是否可以通过更改“后退”按钮的行为来阻止某人返回上一页。(就像提交->返回错误排序一样) 由于双重张贴信息,我不能让它返回到上一页,然后移动到当前一页。

因此,我目前工作地点的中小企业希望尝试禁用某些页面的后退按钮。我们有一个页面,用户在其中做出一些选择并将其提交以进行处理。在某些情况下,他们必须在另一个页面上输入注释

用户发现,如果他们提交信息并进入带有注释的页面,然后点击“上一步”按钮返回上一页,则不必输入注释

我知道有几种不同的解决方案(其中许多比禁用后退按钮要优雅得多),但这就是我剩下的。是否可以通过更改“后退”按钮的行为来阻止某人返回上一页。(就像提交->返回错误排序一样)

由于双重张贴信息,我不能让它返回到上一页,然后移动到当前一页。我只能让它不直接离开当前页面。我在谷歌上搜索过它,但我只看到一些帖子说它会一直回到上一页。我希望有人有一些疯狂的功夫js技能,可以使这成为可能


我知道每个人都说这是一个坏主意,我也同意,但有时你只需要按照别人告诉你的去做。

禁用后退按钮似乎是一种“暴力”方法


另一种选择是,您可以跳出到没有命令按钮的模式对话框,引导用户浏览工作流,并在流程完成后关闭对话框。

您是否可以将注释移动到上一页,并将其设置为必填字段


禁用后退按钮将不起作用。

您有权访问服务器端源代码吗?如果是这样,您可以在第一页上进行检查,如果信息已经提交,则会重定向到第二页(显然,您需要为此使用会话)。在以前的工作中,这就是我们处理多步骤应用程序的方式(应用程序与接受应用程序相同)。

根本没有可靠的方法可以做到这一点。您不能保证100%的时间可以阻止用户这样做

考虑到这一点,是否值得使用非常奇特的解决方案来禁用“大部分”时间?那由你决定


祝你好运。

由于浏览器中javascript的安全隔离,您无法更改“后退”按钮的功能

也许您可以在用户会话中存储一些指示需要注释的内容,并让用户尝试加载的应用程序中的任何页面重定向到注释页面

如果用户在进入评论页面时关闭浏览器怎么办

我知道你在这里没有选择的余地,但因为他们的要求似乎是不可能的

<>也许你可以不考虑这个项目完成,直到用户输入评论。因此,您需要跟踪正在进行的项目和已完成的项目,并在UI中进行区分,但这可能是最可靠的方法

或者只是将注释字段放在表单页面上?

我以前见过:

window.onBack = history.forward();
这绝对是一个肮脏的黑客行为,如果可能的话,我会尝试不禁用后退按钮。用户可能仍然可以很容易地绕过它。根据缓存的不同,不知道是否会处理服务器代码,或者是否会首先运行带有JavaScript的缓存页面


所以,是的,使用风险自负:)

不,你注定要失败。即使您在不同的浏览器中弹出页面并隐藏“后退”按钮,也总会有退格键

营销人员和分析师的问题在于,他们中的一些人不理解网络无状态的基本概念。他们不明白网页完全不知道浏览器在使用它,对浏览器的绝对控制完全超出了网页的能力范围

阻止用户点击后退按钮的最佳方法是确保用户按下后退按钮时页面丢失所有数据,例如,评论页面是唯一可以保存数据的点,如果用户按下后退按钮,他们必须重新做所有事情(请按照pragma:nocache的思路思考)


当然,用户会抱怨,但这是这个被上帝抛弃的需求存在的原因,对吗?

不要这样做,就是不要这样做。这是糟糕的界面设计,迫使用户的浏览器以他们不期望的方式运行

我认为任何成功阻止我的后退按钮工作的脚本都是一种黑客行为,我希望IE团队能为它发布一个安全补丁

后退按钮是他们程序界面的一部分,而不是你的网站

在您的特定情况下,我认为最好的办法是在页面中添加卸载事件,如果用户尚未完成表单,该事件会警告用户。后退按钮将不受影响,用户将收到其操作的警告

用户发现的是 他们不必进入 如果他们提交信息,请发表评论 然后转到带有注释的页面 然后点击后退按钮返回 转到上一页

然后,他们可能也足够聪明,可以在comments字段中键入“no comment”


你可以试着强迫人们添加评论,但最终你可能会得到坏的、不可用的软件、恼怒的用户,并且仍然得不到评论。这通常是一个退后一步,从用户的角度重新考虑您正在做的事情的好时机。

您应该保护您的应用程序,防止重复提交,而不是破坏用户界面来隐藏错误。

作为一个简单的解决方案:尝试一下这个。在其中插入一个更新面板和一个按钮,并使用javascript隐藏它,然后在页面加载时按下它。是的,我知道这会导致你的页面发回lo
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<title>Untitled Page</title>
<script type = "text/javascript" >
function changeHashOnLoad() {
     window.location.href += "#";
     setTimeout("changeHashAgain()", "50"); 
}

function changeHashAgain() {
  window.location.href += "1";
}
// If you want to skip the auto-positioning at the top of browser window,you can add the below code:
window.location.hash=' ';
var storedHash = window.location.hash;
window.setInterval(function () {
    if (window.location.hash != storedHash) {
         window.location.hash = storedHash;
    }
}, 50);


</script>
</head>
<body onload="changeHashOnLoad(); ">
Try to hit the back button!
</body>
</html>