【问题标题】:How can i control when somebody press exit button当有人按下退出按钮时我如何控制
【发布时间】:2012-12-10 21:46:10
【问题描述】:

当有人按下 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);
});

【问题讨论】:

    标签: c# c#-4.0 jquery asp.net-ajax


    【解决方案1】:

    在页面正文的 onBeforeUnload 上调用您的方法

    【讨论】:

    • 那会做什么?我只是想了解我在做什么以及为什么
    【解决方案2】:

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

    我没有看到任何捕捉按钮事件的理由。

    按下X 按钮将导致Session_End

    只需处理global.aspx Session_End

    就像这个例子:

    How to handle session end in global.asax?

    注意:这不会发生在用户退出但看到超时时的同一时刻

    【讨论】:

    • 但是我使用它,然后它等待会话结束对吗?因为我将会话超时设置为 1-2 小时左右。
    • Timeout 属性指定分配给应用程序的 Session 对象的超时期限,以分钟为单位。如果用户在超时期限内没有刷新或请求页面,则会话结束。我认为这有点过时了。为什么不花 10 分钟时间解决你的问题?
    • 因为我正在制作一个聊天应用程序,而且我不会对它们进行会话超时。他们可以随心所欲地逗留。我希望将它们扔掉的唯一方法是当它们使用关闭按钮时。
    • 所以只要在看到结束后进行清理,有什么关系?
    【解决方案3】:
    1. 您使用的jQuery idleTimer plugin 用于检测页面的空闲时间并根据您重定向用户的超时时间。

    2. 您可以使用:jQuery unload Event:

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

    【讨论】:

    • 更新面板中用于更新 div 的计时器会调用卸载事件吗?
    • 我认为你的回答是有希望的。但如果您可以提供,我需要更多信息
    猜你喜欢
    • 1970-01-01
    • 2011-01-22
    • 2012-11-07
    • 2023-03-29
    • 2019-06-17
    • 2018-08-11
    • 2016-07-15
    • 2021-04-16
    • 2013-10-17
    相关资源
    最近更新 更多