Javascript 在用户关闭选项卡/窗口之前执行某些操作

Javascript 在用户关闭选项卡/窗口之前执行某些操作,javascript,Javascript,我尝试了window.onbeforeunload,但似乎不起作用。有什么帮助吗 我有一个cookie,可以跟踪用户是否登录 function handleLoginRegSuccess(){ $.cookie('loginStatus', "ON", { expires: 1, path: '/'}); showBusyMessage(); goToIndex(); } 这是我试过的,但不起作用 window.onbeforeunload = function(e)

我尝试了
window.onbeforeunload
,但似乎不起作用。有什么帮助吗

我有一个cookie,可以跟踪用户是否登录

function handleLoginRegSuccess(){
    $.cookie('loginStatus', "ON", { expires: 1, path: '/'});
    showBusyMessage();
    goToIndex();
}
这是我试过的,但不起作用

window.onbeforeunload = function(e) {
    if(userLoginStatus()=="ON"){
        requestLogout();
        $.removeCookie('loginStatus');
        return "test";
    }
};

因此,为了直接回答您的问题,onbeforeunload需要一个实际工作的返回值,此时它将用该字符串提示用户,用户将得到一个确认框

有关此堆栈答案的更多详细信息:

你可以考虑的是,有一个会话超时来记录人,或者(更积极地)从客户端记录心跳(通过Ajax)。当心跳无法触发时,他们就会注销


如果您根本不想与用户交互(您的示例代码似乎不这样做),也可以使用onunload事件:

为什么需要它?如果用户刚刚失去互联网连接或电源怎么办?我需要在用户离开页面时注销。我知道可能有一些案件我无法处理,但哦,好吧。如果我玩游戏,我的电脑关机,我的游戏就输了。发生了……是的。因此,如果你能接受这样一个事实,即用户在断电或连接丢失的情况下没有“正确”注销-那就假装每次用户决定关闭选项卡时,他们都会断开连接/断电如何?你想说什么?你无法解释浏览器崩溃、电源故障、关闭盖子、终止进程,服务器上的会话结束事件是100%处理它的唯一方法。您也无法判断是什么触发了OnBeforRunLoad事件,可能是关闭页面、刷新、导航离开等等。