注销不在浏览器关闭,打开多个选项卡

时间:2014-03-11 10:21:32

标签: javascript html google-chrome browser

我正在进行基于SAML的身份验证,并希望我的用户在关闭浏览器时退出系统:我编写了以下浏览器端代码:

window.onbeforeunload =function(e){

deleteAllCookies();

var my_form=document.createElement('FORM');
my_form.name='my_form';
my_form.method='POST';
my_form.action="sessionExpired.do";

var hiddenText=document.createElement('INPUT');
hiddenText.type='HIDDEN';
hiddenText.name='crash';
hiddenText.ID='crash';
hiddenText.value='yes';
my_form.appendChild(hiddenText);

my_form.submit();

return;


};

此代码调用我的注销服务,并且能够登出系统,以防打开一个选项卡,但如果与我的应用程序一起打开多个其他选项卡,则同样不起作用。如果有多个选项卡,我的服务器代码被调用,使会话无效,但仍然会话登录,并且不再要求进行身份验证。

1 个答案:

答案 0 :(得分:0)

beforeunload的处理程序可以执行的操作有限制。

您可以返回文字以提示用户询问他们是否确定要离开。 但是,您无法强制窗口保持打开足够长的时间来向服务器发出请求。

  • 如果您没有返回字符串,则窗口将立即关闭,您的表单提交将不会得到处理。
  • 如果确实返回了字符串,则会询问用户是否确定要关闭窗口。如果是,则窗口将关闭,您的表单提交将不会得到处理。如果不是,那么窗口将不会关闭。

删除cookie可能会有效,但我不认为可以在窗口关闭时提交表单或向服务器发出请求。