jquery注销功能

时间:2013-10-24 07:01:05

标签: javascript jquery

我在卸载之前使用下面的代码来注销用户。  我有3个级别的身份验证,在第二级身份验证页面中我注入了此代码。如果用户是2因素身份验证用户,则用户将停在我注入代码的页面,如果用户关闭浏览器,用户将被注销/会话将被终止。 但是如果用户通过2级身份验证,我会看到弹出窗口,因为您已登出并且用户可以登录。我需要的是:在关闭事件时,只有弹出窗口必须来。

我使用了window.onbeforeunload,window.onunload和所有其他选项,它不适用于某些浏览器。 请建议。

var timeoutID;
$(window).bind("beforeunload", function(){    
    logout();
    timeoutID = window.setTimeout(displayMessage(),500);
});

function logout() {
    window.location.href = "logout url";
}

function displayMessage(){
    window.alert( "You are loggedout" );
}

2 个答案:

答案 0 :(得分:0)

timeoutID = window.setTimeout(displayMessage(),500);

应该是:

timeoutID = window.setTimeout(displayMessage,500);

setTimeout的第一个参数必须是函数。你正在调用函数而不是传递函数本身。这就是警报弹出的原因。

但是,由于您在beforeunload处理程序中可以执行的操作受到限制,因此仍然有效。这只是为了向您展示创建超时函数的正确语法。

答案 1 :(得分:0)

在beforeunload处理程序中你不能做的两件事是:

  1. 将用户重定向到其他页面(浏览器不允许)。
  2. 设置一个将在未来某个时间运行的计时器(该页面已经关闭,因此没有将来的时间)。
  3. 因此,您在beforeunload处理程序中尝试执行的操作都不起作用。 (仅供参考,在前载中还有其他限制,例如你不能使用prompt()alert()等等......但这些是你正在做的两个。)

    您不会说出如何跟踪登录/退出,因此我们很难确切知道建议的内容。会话cookie将在浏览器关闭时自动过期。可以在beforeunload处理程序中轻松清除常规cookie。

相关问题