每次用户关闭它时,我都会尝试注销。我已经看到了所有类似的问题,但我仍然没有发现任何有效的问题。
这就是我所做的:
<script type="text/javascript">
$(document).ready(function() {
$(window).bind("beforeunload", function() {
confirm("Do you really want to logout?") && $.ajax({
type: "GET",
url: "/admin/account/logout"
})
})
});
</script>
我试过没有confirm
,但它仍然不起作用。我绝对相信它可以做到,因为我的银行网站具有相同的功能。
修改
没有confirm
它会触发注销ajax,但即使我浏览了这些页面。这让我想起,我银行的网站使用的是AngularJS,这不是一个真正的链接浏览系统,对吧?也许这就是它在那里工作的原因?
答案 0 :(得分:0)
每当您说您的浏览器卸载当前的html时,就会触发beforeunload
。即使您点击链接也会发生这种情况。当您选择标签时,您还会关闭执行该页面的js的环境。我不认为它可以原生地完成。
答案 1 :(得分:0)
您的代码存在的问题是请求是异步执行的,并在关闭窗口时终止。
如果将Invalid Date
参数设置为false,则会在选项卡/窗口关闭之前执行ajax请求。
不幸的是,这不会解决您的问题,因为每次您要离开页面时都会触发此事件。如果你只是试图破解解决方案,你可以使用这里提到的方法:https://stackoverflow.com/a/44057659/5173095 - 在服务器端触发超时,如果超时超时后没有再发出请求,则注销用户。