如果有人按下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);
});
答案 0 :(得分:0)
在Page's Body的 onBeforeUnload 上调用您的方法
答案 1 :(得分:0)
如果您只想在用户关闭浏览器时执行某些操作。
我认为没有理由抓住按钮事件。
按X
按钮将转到Session_End
只需处理global.aspx Session_End
就像在这个例子中一样:
How to handle session end in global.asax?
注意:这不会发生在用户退出的同一时刻,但是当看到超时时
答案 2 :(得分:0)
您正在使用的jQuery idleTimer plugin用于检测网页的空闲时间&amp;根据超时,您正在重定向用户。
您可以使用:jQuery unload Event:
当用户离开页面时,会将卸载事件发送到窗口元素。这可能意味着很多事情之一。用户可以单击链接离开页面,或在地址栏中键入新URL。前进和后退按钮将触发事件。 关闭浏览器窗口将导致事件被触发。即使页面重新加载也会首先创建卸载事件。