【发布时间】:2013-08-16 14:54:15
【问题描述】:
关闭选项卡时我需要清除会话变量,但到目前为止我找不到任何解决方案。我得到的最接近的是使用“onbeforeunload”函数是javascript。
<body onbeforeunload='destroySession()'>
<!--Codes for the site includeing php scripts-->
</body>
<script type='text/javascript'>
function destroySession(){
$.ajax({
url: "destroySession.php"
});
}
<script>
问题是每次单击、刷新或提交表单时都会调用该函数。有没有更好的方法在关闭选项卡时销毁会话变量,或者我做错了什么?请帮忙。
【问题讨论】:
-
相信我,停下来。您不会能够可靠而完整地做到这一点。您可以检测到页面是如何以某些方式离开的(单击链接、提交表单等),但您将无法区分“关闭选项卡”和“导航”和许多其他事件。不幸的是我们不能做这种事情(因为像你问的那样清除会话会很好),但是事情没有设置为正常工作。请记住,这是一个网站,而不是桌面应用程序
-
与其检测用户离开网站,不如以正确的方式进行,而是在设定的一段时间后将其超时 *提示:您实际上不需要做任何事情来制作发生这种情况! 当有人同时在两个选项卡中打开您的应用程序(这种情况并不少见),然后决定关闭两个选项卡中的一个时,使用选项卡关闭会很麻烦。
-
告诉我们你为什么要这样做,因为你可能错过了一个标准做法。
-
您可能想要使用会话 cookie:en.wikipedia.org/wiki/HTTP_cookie#Session_cookie 当浏览器窗口关闭时,浏览器会自动清除会话 cookie。这对您的用例来说可能已经足够了?
标签: php javascript jquery ajax session-variables