仅在浏览器关闭时结束会话
Ending a session on browser close only
我试图结束用户的会话时,他们关闭浏览器,因为他们从来没有正确退出。
我需要改变一个值在数据库后,他们关闭浏览器。
<script type="text/javascript">
window.onbeforeunload = check;
function check() {
return "Are you sure you want to exit this page?";
//or put whatever function you need to call when a user closes the web //browser.
endSession();
}
</script>
这确实在关闭浏览器时有效,但不幸的是,当我重定向到任何其他页面时也有效。
是否有办法做到这一点浏览器关闭吗?
。
在我回答你的问题之前,我想让你知道,没有一种万无一失的技术可以100%地捕获浏览器关闭事件。问题在于HTTP的无状态特性。
首先创建一个页面AutoLogOut。-
protected void Page_Load(object sender, EventArgs e)
{
Session.Abandon();
}
然后添加以下javascript代码在您的页面或主页:-
<script type="text/javascript">
var clicked = false;
function CheckBrowser()
{
if (clicked == false)
{
//Browser closed
}
else
{
//redirected
clicked = false;
}
}
function bodyUnload()
{
if (clicked == false)//browser is closed
{
var request = GetRequest();
request.open("GET", "AutoLogOut.aspx", true);
request.send();
}
}
function GetRequest()
{
var request = null;
if (window.XMLHttpRequest)
{
//incase of IE7,FF, Opera and Safari browser
request = new XMLHttpRequest();
}
else
{
//for old browser like IE 6.x and IE 5.x
request = new ActiveXObject('MSXML2.XMLHTTP.3.0');
}
return request;
}
最后在body标签上添加这些事件处理程序:-
<body onunload="bodyUnload();" onclick ="clicked=true;>
现在当用户关闭浏览器时,它将关闭服务器上的会话。然而,我只是想强调,这个解决方案可能不是100%的工作时间,因为有机会,当用户关闭浏览器,他没有连接到互联网。这个链接可能对你有所帮助。关闭
最好的办法是在"onbeforeunload"函数中调用一些ajax。然后,这个ajax将调用一个服务器页面,该页面将设置您的"db中的值"。
然而,使用"onbeforeunload"是不赞成的,如果它阻止用户关闭浏览器。
相关文章:
- 为什么“;未定义的“;在JavaScript中结束循环
- 循环结束/推送到数组之前在页面上呈现EJS
- 在另一个函数成功结束后调用该函数
- Flash Uploadify在调用我的MVC控制器时没有保留会话/授权
- 在动画结束之前调用函数
- JavaScript 会话何时过期?如何在会话结束时删除 Cookie
- 如何在 Cookie 中将会话 ID 设置为在会话结束时过期
- 单击将 PHP 会话设置为保持复选框处于选中状态.取消选中结束会话时
- 移动网站推送通知-会话结束后
- 如何在Meteor中结束会话
- 结束一个会话,以便在用户点击浏览器后退按钮时可以开始另一个会话
- 如何在JSF中关闭浏览器时结束http会话
- 如何处理在会话结束时打开多个选项卡的情况下注销用户
- 每个浏览器会话运行一次脚本,但在结束时冻结脚本
- Ajax——通过onload和onunload启动和结束会话
- 仅在浏览器关闭时结束会话
- 当用户处于非活动状态时,如何结束会话?
- 如何检测会话何时结束
- 如何重定向到登录.aspx页面从全局.会话结束时asx
- 倒计时计时器结束后清除(本地存储器、会话存储器)