Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当用户关闭选项卡时注销_Javascript_Jquery - Fatal编程技术网

Javascript 当用户关闭选项卡时注销

Javascript 当用户关闭选项卡时注销,javascript,jquery,Javascript,Jquery,在我的Django站点上,我想在关闭选项卡或浏览器时自动从该站点注销。我的意思是,当我通过关闭选项卡而不是使用注销按钮关闭站点时,在再次输入URL后,我希望看到用户已经从站点注销,以强制用户再次输入用户名和密码 有没有办法在JQuery中关闭选项卡 先谢谢你 Edit:onunload&onbeforeunload事件导致用户在重新加载页面时注销 您可以使用Javascriptonunload&onbeforeunload事件。在这些事件中,销毁Django的会话cookie 当您通过链接或浏览

在我的Django站点上,我想在关闭选项卡或浏览器时自动从该站点注销。我的意思是,当我通过关闭选项卡而不是使用注销按钮关闭站点时,在再次输入URL后,我希望看到用户已经从站点注销,以强制用户再次输入用户名和密码

有没有办法在JQuery中关闭选项卡

先谢谢你


Edit:onunload&onbeforeunload事件导致用户在重新加载页面时注销

您可以使用Javascript
onunload
&
onbeforeunload
事件。在这些事件中,销毁Django的会话cookie


当您通过链接或浏览器后退按钮离开站点时,也会触发这些事件,因此如果这是您真正想要的,请小心并三思。

将您的注销代码添加到onunload事件中

window.onunload = function () {
    //logout code here...
}
在JQuery中,可以使用.unload()函数。请记住,您没有太多时间,因此可以发送Ajax请求,但结果可能无法到达客户端

另一个技巧是打开一个新的小窗口,并在那里处理注销

window.open("logout url","log out","height=10,width=10,location=no,menubar=no,status=no,titlebar=no,toolbar=no",true);
如果要禁用关闭窗口(或至少警告用户),可以使用以下代码:

window.onbeforeunload = function(event) {
    //if you return anything but null, it will warn the user.
    //optionally you can return a string which most browsers show to the user as the warning message.
    return true;
}

另一个技巧是每隔几秒钟对客户端进行ping操作。如果没有回复,则假定用户已关闭窗口、浏览器已崩溃或存在网络问题,结束了聊天会话。在客户端,如果您没有收到这个ping包,您可以假设网络连接或服务器有问题,您可以显示注销警告(并可以选择让用户再次登录)。

我刚刚遇到这个问题。在Django settings.py文件中,可以添加以下标志:

会话在浏览器处过期关闭=真


这将在浏览器关闭时注销用户请注意,如果其他选项卡或窗口仍处于打开状态,用户将保持登录状态。(浏览器必须完全关闭)。

如果用户重新加载页面,会发生什么情况?我认为如果用户在一段时间内处于非活动状态,最好设置会话到期时间。谢谢您的回答,但是当我重新加载页面或转到新页面(重新加载页面)时,它也会注销用户。这应该会有所帮助。您可以使用而不是
localStorage
谢谢:)我想我需要执行这些步骤。此外,我预期并假设有一个特殊事件处理“关闭选项卡或浏览器”@阿比