我在卸载之前使用下面的代码来注销用户。 我有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" );
}
答案 0 :(得分:0)
timeoutID = window.setTimeout(displayMessage(),500);
应该是:
timeoutID = window.setTimeout(displayMessage,500);
setTimeout
的第一个参数必须是函数。你正在调用函数而不是传递函数本身。这就是警报弹出的原因。
但是,由于您在beforeunload
处理程序中可以执行的操作受到限制,因此仍然有效。这只是为了向您展示创建超时函数的正确语法。
答案 1 :(得分:0)
在beforeunload处理程序中你不能做的两件事是:
因此,您在beforeunload处理程序中尝试执行的操作都不起作用。 (仅供参考,在前载中还有其他限制,例如你不能使用prompt()
或alert()
等等......但这些是你正在做的两个。)
您不会说出如何跟踪登录/退出,因此我们很难确切知道建议的内容。会话cookie将在浏览器关闭时自动过期。可以在beforeunload处理程序中轻松清除常规cookie。