Asp.net 浏览器关闭事件

Asp.net 浏览器关闭事件,asp.net,Asp.net,当用户直接关闭浏览器而不注销时,是否有javascript以外的其他选项来触发Session_End()事件。如果我一直检查客户端是否向服务器发出请求,因为我认为当用户关闭浏览器时,服务器不会收到任何请求。那么,如果可能的话,我该如何实施呢?此外,我是否可以始终检查用户是否正在查看我的任何页面,如果没有,我是否可以引发会话结束()事件?否,您无法检查用户正在做什么或何时关闭浏览器。 这显然会侵犯用户的用户和数据安全权利。此外,这种功能依赖于浏览器,因此很难实现,因为每个浏览器都有自己的界面和原理

当用户直接关闭浏览器而不注销时,是否有javascript以外的其他选项来触发Session_End()事件。如果我一直检查客户端是否向服务器发出请求,因为我认为当用户关闭浏览器时,服务器不会收到任何请求。那么,如果可能的话,我该如何实施呢?此外,我是否可以始终检查用户是否正在查看我的任何页面,如果没有,我是否可以引发会话结束()事件?

,您无法检查用户正在做什么或何时关闭浏览器。 这显然会侵犯用户的用户和数据安全权利。此外,这种功能依赖于浏览器,因此很难实现,因为每个浏览器都有自己的界面和原理

您可以做的是用javascript实现一个函数,它每隔一分钟左右向服务器发送一个信号,告诉服务器用户仍然处于活动状态


然后可以存储用户最后一个信号的时间。这样,如果您在最后一分钟左右没有收到信号,您就会看到用户处于非活动状态。

hii javascript中有一个事件用于查找浏览器关闭事件

但它并不适用于所有浏览器

他们的做法就是一个例子

<HEAD>
   <TITLE> TEST</TITLE>

</HEAD>

<script type="text/javascript">

           javascript:window.history.forward(1);
           var temp = true;
           document.onkeydown = keyDownPress;
           document.onmousedown = keyDownPress;


    var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
            //alert(is_chrome);
    if(is_chrome){
                    window.onbeforeunload = function(e) {
                    //  confirmExit(e);
                    alert("1");
                    alert("2");
                    alert("3");

                        return "You are going to close?"; // you can make this dynamic, ofcourse...
                    }
        }else{

    window.onbeforeunload = confirmExit;
 }

           /*if (navigator.userAgent.indexOf('AppleWebKit') > -1)         window.onbeforeunload = confirmExit;
else Event.observe(window, 'beforeunload', confirmExit);*/
   /*
    var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;

   if(is_chrome){
  window.onbeforeunload = function(e) {
   confirmExit(e);
   return "Are you sure you want to leave this page ?"; // you can make this                  dynamic, ofcourse...
     };}else{
     window.onbeforeunload  = confirmExit;
        }*/

         /* if (window.addEventListener) {  // all browsers except IE before version 9
            window.addEventListener ("beforeunload", OnBeforeUnLoad, false);
         }
         else {
           if (window.attachEvent) {   // IE before version 9
              window.attachEvent ("onbeforeunload", OnBeforeUnLoad);
           }
       }
      */




           /* function(e){
             if(temp==true ){
                     alert("You are going to close");
                //   return null;


            }
    };  */              

    function keyDownPress(e)
    {
            var evt = e || window.event;
            var keyPressed = evt.which || evt.keyCode;

            if (keyPressed==116) {
                    temp=false;
                    return false;
            }

            if(evt.button==2) {
                    alert("For security reasons, Right click has been disabled!");
                    return false;
            }
      }

      function confirmExit(e){

      //  alert("ok ok ");
             if(temp==true ){
                     alert("You are going to close");



           }
   }

试验
javascript:window.history.forward(1);
var-temp=true;
document.onkeydown=keyDownPress;
document.onmousedown=keyDownPress;
var是_chrome=navigator.userAgent.toLowerCase().indexOf('chrome')>-1;
//警报(是铬);
如果(是铬){
window.onbeforeunload=函数(e){
//证实(e);
警报(“1”);
警报(“2”);
警报(“3”);
返回“您将要关闭?”;//当然,您可以使其动态化。。。
}
}否则{
window.onbeforeunload=确认退出;
}
/*if(navigator.userAgent.indexOf('AppleWebKit')>-1)window.onbeforeunload=confirmExit;
观察(窗口“卸载前”,确认)*/
/*
var是_chrome=navigator.userAgent.toLowerCase().indexOf('chrome')>-1;
如果(是铬){
window.onbeforeunload=函数(e){
证实(e);
return“您确定要离开此页面吗?”;//当然,您可以使其动态化。。。
}其他的{
window.onbeforeunload=确认退出;
}*/
/*if(window.addEventListener){//除IE版本9之前的所有浏览器
window.addEventListener(“beforeunload”,OnBeforeUnLoad,false);
}
否则{
if(window.attachEvent){//IE版本9之前
window.attachEvent(“onbeforeunload”,onbeforeunload);
}
}
*/
/*职能(e){
如果(温度==真){
警报(“您将要关闭”);
//返回null;
}
};  */              
功能键按下(e)
{
var evt=e | | window.event;
var keyPressed=evt.which | | evt.keyCode;
如果(按键==116){
温度=假;
返回false;
}
如果(evt.按钮==2){
警报(“出于安全原因,已禁用右键单击!”);
返回false;
}
}
函数证实(e){
//警报(“ok”);
如果(温度==真){
警报(“您将要关闭”);
}
}

这段代码在IE8、Mozilla FF8中运行良好 不在Google Chorme和FF 9上工作

请参见。由于我是asp.net的新用户,您能详细告诉我解决方案吗?请查看本教程:我看过您的教程,从中我可以从客户端向服务器发送请求。但是我想在服务器中实现一个函数,该函数在一个时间间隔内工作,检查是否连接了任何客户端,如果结果返回null,它将调用Session.advand()。我是asp.net新手。你能帮我写代码和详细描述吗?你不必这么做。会话将从ASP.NET自动关闭。每个会话都有一个预定义的生命周期,当它们到达生命周期结束时,将自动放弃。您可以在web.config中定义会话的寿命