• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
平平淡淡才是真
老卢,真的老了
博客园    首页    新随笔    联系   管理    订阅  订阅

今天论坛上看到 预防按钮的多次点击 恶意刷新 觉得不错.

今日在做一个新闻系统的评论时. 
想到了预防
"提交"按钮的多次点击的问提 
(prevent multiple clicks of a submit button 
in ASP.NET). 
以前碰到此类问提总是用重定位页面来解决. 
这次我想找到一个一劳永逸的办法. 

通过查讯Google,找到了一些代码,挑选一些较好的修改了一下。


public void page_load(Object obj,EventArgs e) 
{ 
   btn.Attributes.Add(
"onclick","state=true;"); 
   StringBuilder sb
=new StringBuilder(); 
   sb.Append(
"if (!state) return;"); 
   sb.Append(
"var button=document.getElementById('btn');"); 
   sb.Append(
"button.value=" Please Wait... ";"); 
   sb.Append(
"document.body.style.cursor='wait';"); 
   sb.Append(
"button.disabled=true;"); 

string strScript="<script>"; 
strScript
=strScript +"var state=false;"; 

//将函数绑定到页面的onbeforeunload事件: 
strScript=strScript +"window.attachEvent('onbeforeunload',function(){" +sb.ToString()+ "});"; 
strScript
=strScript +"</"+"script>"; 
Page.RegisterStartupScript(
"onbeforeunload",strScript); 
} 

private void Submit_Click(Object sender, EventArgs e){ 
   
//模拟长时间的按钮处理 
   System.Threading.Thread.Sleep(2000); 
   Response.Write(
"<script>alert('bbbbbb!!');"+"</"+"script>"); 

} 


<asp:button id="btn" Text="Submit" OnClick="Submit_Click" runat="server"/>


修改好的这个例子原理是提交后将按钮置于一定时间的无效状态. 
仅能防止一些,因网速慢而心急的用户造成的误点击. 
对于恶意的多次刷新而形成的多次提交还是没有办法解决. 
(不过应该可通过页面的onbeforeunload事件解决) 
posted @ 2007-06-03 19:29  空空空白白白  阅读(270)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3