Javascript 关闭浏览器时注销不起作用,打开多个选项卡

Javascript 关闭浏览器时注销不起作用,打开多个选项卡,javascript,html,google-chrome,browser,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

我正在执行基于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;


};

此代码调用我的注销服务,并能够在打开一个选项卡的情况下注销系统,但如果与我的应用程序一起打开多个其他选项卡,则此代码不起作用。例如,在多个选项卡的情况下,调用我的服务器代码,从而使会话无效,但会话仍保持登录状态,不会再次要求进行身份验证。

在卸载之前,您可以在处理程序中对
执行的操作有限制

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

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

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

表单提交正在进行,它正在删除cookie,但如果我返回一个字符串,则您是对的,在这种情况下,表单提交不会发生,但服务器调用正在进行,我不希望服务器返回任何内容,因此,如果服务器在调用时使会话无效,那么它的精细格式是正确的,并且代码在打开一个选项卡时工作正常,但在打开多个选项卡时会产生问题。