2

我试过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";
    }
};
4

1 回答 1

2

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

此堆栈答案中的更多详细信息:如何覆盖 OnBeforeUnload 对话框并将其替换为我自己的?

相反,您可能会考虑使用会话超时来注销该人,或者(更积极地)来自客户端的心跳以使他们保持登录状态(通过 ajax)。当心跳无法触发时,它们将被注销。

如果您根本不尝试与用户交互(因为您的示例代码似乎没有这样做),您也可以使用 onunload 事件:http: //msdn.microsoft.com/en-us/library/ie /ms536973(v=vs.85).aspx

于 2012-11-07T21:35:33.350 回答