我写的应用程序,如果用户命回来,它可能重新发送同样的信息和混乱的流量和完整性的数据。我怎么禁用的用户并不javascript?

有帮助吗?

解决方案

这是不可能的,可悲的。但是,请考虑你的应用导航模型。您使用的是后/重新定向/获得PRG模式? http://en.wikipedia.org/wiki/Post/Redirect/Get?

这种模式是更多的后按钮友好比回发模型。

其他提示

你不应该。

你可以附加一些脚本到onbeforeunload事件的一页并确认用户那是什么他们想要做的事;你可以去有点进一步和 尝试禁止它 但当然,这只会的工作对于用户javascript接通。而不是看重写的应用程序,这样你就不会提交的每一页上提交,但只有在结束过程。

我强烈敦促你去英勇的长度,以防止破坏,这是一个肯定的方式疏远你的用户和甚至做了它对第1号 雅各布*尼尔森的顶部的10个网页设计的错误,在1999年.

也许你可以考虑,而是问一个问题:"如何避免破坏后按钮 <insert your="" scenario="" here="">?"

如果斯科特的回答命接近标准,考虑更改你的流向PRG模型。如果是别的东西,然后得到更详细一点看看我们如何能够帮助。

我想出了一个小小的黑客,禁止返回键用JavaScript。我检查了它在铬10,firefox3.6和IE9:

<!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";
}

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 back!
</body>
</html>

最好的选择是不要取决于回发给的控制流程,但是如果你被卡住吗(现在)

你可以用这样的事情:

  Response.Cache.SetCacheability(HttpCacheability.NoCache);
  Response.Cache.SetExpires(Now.AddSeconds(-1));
  Response.Cache.SetNoStore();
  Response.AppendHeader("Pragma", "no-cache");

你很快就会发现,它将不在所有的浏览器,但然后你可以介绍一个检查在你的代码,如:

 if (Page.IsPostBack)
 {
        if (pageIsExpired()){
           Response.Redirect("/Some_error_page.htm");
        }
        else {
           var now = Now;
           Session("TimeStamp") = now.ToString();
           ViewState("TimeStamp") = now.ToString();
        }

  private boolean pageIsExpired()
  {
     if (Session("TimeStamp") == null || ViewState("TimeStamp") == null)
        return false;

     if (Session("TimeStamp") == ViewState("TimeStamp"))
        return true;

        return false;
  }

这将解决问题的一些扩展,代码没有被检查--仅为举例的目的..

它可能禁止回来按钮在所有主要的浏览器。它只是使用的散列值以禁止返回键。只要把这5个行代码在你的网页

 <script>
window.location.hash="no-back-button";
window.location.hash="Again-no-back-button";//for google chrome
window.onhashchange=function(){window.location.hash="no-back-button";}
</script> 

详细描述

这里以前的职位:防止使用后按钮(IE)

无论你想出禁止返回按钮可不停止后按钮在未来的浏览器。

如果其后在开发周期中我建议你尝试了一些建议,上述但是,当你有时间你应该结构流程使得后按钮不会干扰逻辑的网站,它只是需要的用户回复到以前的网页,如他们期望它做的。

这是真的,适当验证的应该加以确定重复的数据并不烂摊子的事情了。然而,如在我的情况下,我不完全控制的数据,因为我使用一些第三方API后我的形式。所以我用这个

history.go(+1);

这将发送用户期待的"收到",这是该来之后"支付"页面,如果他们尝试回来"支付"的网页(只给付款为例)。有节制地使用,虽然

你可以发布的数据在每种形式,比如,当一个窗口。这将禁用背的按钮上的每个窗口,但没有javascript它可能很难力的老一个关闭。

4们从Rolla写了这篇文章在禁止返回键前很长一段时间(在银河系遥远): http://www.4guysfromrolla.com/webtech/111500-1.shtml

我能够做到这一点通过使用:

 Response.Cache.SetExpires(DateTime.MinValue);
 Response.Cache.SetNoStore();

当我用的响应。高速缓存。SetCacheability(HttpCacheability.NoCache);它阻止我从网上下载的办公室文件。

找到下面的链接

禁用浏览器回键功能使用的JavaScript asp.net |ASP.Net 禁用浏览器按钮(使用javascript)

http://www.aspdotnet-suresh.com/2011/11/disable-browser-back-button.html

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top