预防"提交"按钮的多次点击
Google,找到了一些代码,自己修改了一下。主要参考老猫'blog.
publicvoidpage_load(Objectobj,EventArgse)
{
btn.Attributes.Add("onclick","state=true;");
StringBuildersb=newStringBuilder();
sb.Append("if(!state)return;");
sb.Append("varbutton=document.getElementById('btn');");
sb.Append("button.value=/"PleaseWait.../";");
sb.Append("document.body.style.cursor='wait';");
sb.Append("button.disabled=true;");
stringstrScript="<script>";
strScript=strScript+"varstate=false;";
//将函数绑定到页面的onbeforeunload事件:
strScript=strScript+"window.attachEvent('onbeforeunload',function(){"+sb.ToString()+"});";
strScript=strScript+"</"+"script>";
ClientScriptManager cs = Page.ClientScript;
cs.RegisterStartupScript(this.GetType(), "onbeforeunload", strScript);
}
privatevoidSubmit_Click(Objectsender,EventArgse){
//模拟长时间的按钮处理
System.Threading.Thread.Sleep(3000);
Response.Write("<script>alert(xxx!!');"+"</"+"script>");
}
<asp:buttonid="btn"Text="Submit"OnClick="Submit_Click"runat="server"/>
修改好的这个例子原理是提交后将按钮置于一定时间的无效状态.
仅能防止一些,因网速慢而心急的用户造成的误点击.
对于恶意的多次刷新而形成的多次提交还是没有办法解决.
(不过应该可通过页面的onbeforeunload事件解决)
如何在用户关掉web浏览器窗口前,进行相应的动作
参考maison 'blog
|
长期以来,做Web项目,总会头疼这个问题. 用户不进行注销或者退出功能,直接关闭了浏览器. 或者用户在进行输入操作时,误点了一个链接,跳转到其它页面,造成输入数据的丢失.
今天发现了onbeforeunload事件,它是这样用的: <scriptlanguage="javascript"> g_blnCheckUnload=true; function RunOnBeforeUnload() { if (g_blnCheckUnload) {//注意异常的捕获 try{ window.event.returnValue = 'You will lose any unsaved content'; }catch(e){} }
} </script> <bodyonbeforeunload="RunOnBeforeUnload()"> </body> 这样每次关闭浏览器窗口或涮新页面时,都要触发onbeforeunload这个事件,这样可以对用户进行提示,避免不必要的遗憾。
我上网又查了一些这个事件的用法,感觉还是http://www.surfchen.org/?p=54这篇写得最清楚了,摘抄如下:
onbeforeunload事件: 注:三大主流浏览器中firefox和IE都支持onbeforeunload事件,opera尚未支持。
用法:
object.onbeforeunload=handler<elementonbeforeunload=“handler”…></element>描述: 事件触发的时候弹出一个有确定和取消的对话框,确定则离开页面,取消则继续待在本页。 handler可以设一个返回值作为该对话框的显示文本。
触发于:
- 关闭浏览器窗口
- 通过地址栏或收藏夹前往其他页面的时候
- 点击返回,前进,刷新,主页其中一个的时候
- 点击 一个前往其他页面的url连接的时候
- 调用以下任意一个事件的时候:click,document write,document open,document close,window close ,window navigate ,window NavigateAndFind,location replace,location reload,form submit.
- 当用window open打开一个页面,并把本页的window的名字传给要打开的页面的时候。
- 重新赋予location.href的值的时候。
- 通过input type=”submit”按钮提交一个具有指定action的表单的时候。
可以用在以下元素: BODY, FRAMESET, window
|
分享到:
相关推荐
引言项目开发需要关闭标签页时,弹窗提示用户【数据将不被保存,是否继续操作】实现该功能,则需要监听浏览器是否关闭下面来学习涉及到浏览器关闭的两个方法onbefor
ember install ember-onbeforeunload用法首先,将ConfirmationMixin混合到您的Ember.Route 。 默认情况下,路由model hasDirtyAttributes ( )会在每次卸载前提示用户。 // app/routes/foo.jsimport Ember from '...
NULL 博文链接:https://yuanyuan7891.iteye.com/blog/619615
onbeforeunload事件 它是这样用的: 代码如下:[removed] g_blnCheckUnload = true; function RunOnBeforeUnload() { if (g_blnCheckUnload) { window.event.returnValue = ‘You will lose any unsaved content...
Onunload,onbeforeunload都是在刷新或关闭时调用,可以在[removed]脚本中通过[removed]来指定或者在<body>里指定。区别在于onbeforeunload在onunload之前执行,它还可以阻止onunload的执行。 Onbeforeunload...
百度之,有onbeforeunload与onunload这两个事件,但是onbeforeunload在用户刷新的时候也会执行。搞得我弄的挺久的,所以想在这里做一个小小的总结 onbeforeunload与onunload事件 onbeforeunload定义和用法 ...
NULL 博文链接:https://primarykeylw.iteye.com/blog/1568120
获得用户登陆状态不用说了,判断离开的话就有一点问题了,如果说用户都是按照设计者的规定触发退出事件离开的话那就没什么难度了,但是用户的离开方式多种多样,怎么在用户非法离开的时候即时的判断离开呢?...
1)异同点 相同点:onunload,onbeforeunload都是在刷新或关闭时调用,可以在[removed]脚本中通过[removed]来指定或者在<body>里指定。 不同点: a)onbeforeunload在onunload之前执行 ,它还可以阻止onunload的...
//页面刷新时,刷新之前执行onbeforeunload事件,在新页面即将替换旧页面时onunload事件,最后onload事件。 //页面关闭时,先onbeforeunload事件,再onunload事件。 //对于火狐: //页面刷新时,只执行onunload;...
本文实例讲述了js实现用户离开页面前提示是否离开此页面的方法(包括浏览器按钮事件)。分享给大家供大家参考。具体如下: 用户离开页面前,提示是否离开此页面(包括浏览器按钮事件) [removed] [removed] = ...
自制网页页面加载动画:效果一与效果二(含有HTML字符实体+CSS动画animation+js事件onbeforeunload、onload实现)
运用onunload事件判断浏览器是刷新还是关闭窗口 兼容firefox5及其他浏览器
这个功能其实很简单,就是通过处理window、body或frameset对象或元素的onbeforeunload事件实现的。 这个unbeforeunload的具体用法我就不说了,反正几乎能引起当前页面发生跳转的任何动作,都会触发这个事件。并且它...
Onbeforeunload也是在页面刷新或关闭时调用,Onbeforeunload是正要去服务器读取新的页面时调用,此时还没开始读取;而onunload则已经从服务器上读到了需要加载的新的页面,在即将替换掉当前页面时调用。Onunload是...
阻止浏览器的默认事件和冒泡事件.用onbeforeunload事件。无论快捷键还是点击菜单的刷新,都会有提示,关闭页面时也会出现。