我试图在用户关闭浏览器时结束他们的 session , 因为他们永远不会正确注销。
我只需要在他们关闭浏览器后更改数据库中的值。
<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.aspx 并在 Page_Load 事件中写入此代码:-
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;>
现在当用户关闭浏览器时,它会关闭服务器上的 session 。但是我想强调的是,这个解决方案可能不会 100% 有效,因为当用户关闭浏览器时,他有可能没有连接到互联网。 此链接可能对您有所帮助。 Kill Session on Browser Close
关于c# - 仅在浏览器关闭时结束 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24524265/