繁体   English   中英

我如何控制何时有人按下退出按钮

[英]How can i control when somebody press exit button

我如何控制何时有人在firefox,chrome,IE,safari上按下退出按钮,或控制何时按下风扇关闭按钮,然后从数据库中删除它们,实际上我知道这一点。 我唯一的问题是如何抓住那个按钮按下。

我有一些代码,但似乎不起作用。 我得到的代码看起来像这样

在我的default.aspx.cs上

public partial class _Default : System.Web.UI.Page, System.Web.UI.ICallbackEventHandler


string callBackReference = Page.ClientScript.GetCallbackEventReference(this, "arg", "LogOutUser", "");
        string logOutUserCallBackScript = "function LogOutUserCallBack(arg, context) { " + callBackReference + "; }";
        Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "LogOutUserCallBack", logOutUserCallBackScript, true);

void System.Web.UI.ICallbackEventHandler.RaiseCallbackEvent(string eventArgument)

     _callBackStatus = "failed";

     // log out the user by deleting from the LoggedInUser table
     DataClassesDataContext db = new DataClassesDataContext();

     var loggedInUser = (from l in db.BrugerOnlines
                         where l.BrugerId == Convert.ToInt32(Session["ChatUserID"])
                         && l.RumId == lb
                         select l).SingleOrDefault();

     db.BrugerOnlines.DeleteOnSubmit(loggedInUser);
     db.SubmitChanges();

     var besvarer = (from p in db.Rums where p.FK_Bruger == Session["SupportAdd"].ToString() select p).SingleOrDefault();
     db.Rums.DeleteOnSubmit(besvarer);
     db.SubmitChanges();
     // insert a message that this user has logged out
     this.sendbesked("Bruger har lukket siden " + DateTime.Now.ToString());

     _callBackStatus = "success";
 }
string  System.Web.UI.ICallbackEventHandler.GetCallbackResult()
 {
     return _callBackStatus;
 }

在我的default.aspx上,它看起来像这样。

在页面顶部的javascript中,它看起来像这样

function LogOutUser(result, context) {
        // don't do anything here
    }

    function LogMeOut() {
        LogOutUserCallBack();
    }

<div onload="SetScrollPosition()" onunload="LogMeOut()">
</div>

我使用的库是http://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.js ,我不知道这段代码是其中的一部分

 $(function () {
    var timeout = 60000;
    $(document).bind("idle.idleTimer", function () {
        // function you want to fire when the user goes idle
        $.timeoutDialog({ timeout: 1, countdown: 60, logout_redirect_url: 'http://www.aspdotnet-suresh.com', restart_on_yes: true });
    });
    $(document).bind("active.idleTimer", function () {
        // function you want to fire when the user becomes active again
    });
    $.idleTimer(timeout);
});

在页面主体的onBeforeUnload上调用您的方法

如果您想要的只是在用户关闭浏览器时执行一些操作。

我看不到任何原因来捕获按钮事件。

按下X按钮将进入Session_End

只需处理global.aspx Session_End

像这个例子:

如何在global.asax中处理会话结束?

注意:这不会在用户退出时发生相同的瞬间,而是在出现超时时发生

  1. 您正在使用的jQuery idleTimer插件用于检测页面的空闲时间,并基于您重定向用户的超时。

  2. 您可以使用: jQuery卸载事件

当用户离开页面导航时,将把unload事件发送到window元素。 这可能意味着很多事情之一。 用户可能已经单击了链接以离开页面,或在地址栏中输入了新的URL。 前进和后退按钮将触发事件。 关闭浏览器窗口将导致事件被触发。 即使页面重新加载也会首先创建一个卸载事件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM