如何判断浏览器关闭?方法:在window_unonload事件写代码“告诉”服务器。缺点:当浏览器刷新的时候该事件也会被执行! 二、服务器主动“探测”客户端有没有断线,方法:if Response.IsClientConnected then就知道客户端断线了。缺点:要不断检查客户端,耗资源。 三、那么,如何判断浏览器关闭?一起来了解一下吧。
JS判断IE关闭代码
Onunload与Onbeforeunload
Onunload,onbeforeunload都是在刷新或关闭时调用,可以在
Response.Write("");
后台是没有办法直接捕获到的,不过可以通过在页面中加入以下脚本让浏览器关闭时触发一次提交
window.onunload=function(){
if(event.clientX>document.body.clientWidth && event.clientY < 0 || event.altKey) //如果是关闭浏览器而不是刷新页面
__doPostBack('closing',''); //触发一次提交
}
然后即可在后台此动作进行捕获
protected void Page_Load(object sender, EventArgs e)
{
if (Request["__EVENTTARGET"] == "closing")
{
...最后的处理...
Response.End(); //因为是最后的处理,不需要页面输出,所以执行到这里就可以了
}
...原有的正常代码...
}
有些情况下,页面不会自动生成__doPostBack函数即其相关控件(如:页面上只有Button控件时),可以在页面上手工添加以下代码:
//
var theForm = document.forms['form1'];
if (!theForm) {
theForm = document.form1;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
//]]>
以上方法对于用户通过任务管理器中止IE进程之类的“狠招”没有任务办法...
另外还有个缺点:
1.只有在用户关闭浏览器时才会触发,如果是页面跳转就捕获不到了
2.当然也可以把那个脚本改成
window.onunload=function(){ __doPostBack('closing','');}
这样,不管如果都会触发提交,但是问题更大,因为即使是用户进行正常的页面提交,比如点击页面上的某个按钮也会触发这个事件!
3.解决办法是使用UpdatePanel,这样普通的提交是不会刷新页面的,也就不会触发window.onunload事件了。
以上就是如何判断浏览器关闭的全部内容,1.只有在用户关闭浏览器时才会触发,如果是页面跳转就捕获不到了 2.当然也可以把那个脚本改成 window.onunload=function(){ __doPostBack('closing','');} 这样,不管如果都会触发提交,但是问题更大,因为即使是用户进行正常的页面提交,比如点击页面上的某个按钮也会触发这个事件!内容来源于互联网,信息真伪需自行辨别。如有侵权请联系删除。