Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Javascript在onbeforeunload/onunload期间注销 window.onbeforeunload=before; window.onunload=after; 前功能(evt) { var message=“如果继续,您的会话将被注销!”; 如果(evt的类型==“未定义”){ evt=window.event; } 如果(evt){ evt.returnValue=消息; } } 函数后() { var flex=document.${application}| | window.${application}; flex.unloadMethod();//调用包含“unloadMethod()”的flex类 //调用logout.jsp来实际删除凭据 }_Javascript_Flex4_Onbeforeunload_Onunload - Fatal编程技术网

如何使用Javascript在onbeforeunload/onunload期间注销 window.onbeforeunload=before; window.onunload=after; 前功能(evt) { var message=“如果继续,您的会话将被注销!”; 如果(evt的类型==“未定义”){ evt=window.event; } 如果(evt){ evt.returnValue=消息; } } 函数后() { var flex=document.${application}| | window.${application}; flex.unloadMethod();//调用包含“unloadMethod()”的flex类 //调用logout.jsp来实际删除凭据 }

如何使用Javascript在onbeforeunload/onunload期间注销 window.onbeforeunload=before; window.onunload=after; 前功能(evt) { var message=“如果继续,您的会话将被注销!”; 如果(evt的类型==“未定义”){ evt=window.event; } 如果(evt){ evt.returnValue=消息; } } 函数后() { var flex=document.${application}| | window.${application}; flex.unloadMethod();//调用包含“unloadMethod()”的flex类 //调用logout.jsp来实际删除凭据 },javascript,flex4,onbeforeunload,onunload,Javascript,Flex4,Onbeforeunload,Onunload,这就是我的想法: 当用户单击后退、刷新或关闭窗口时,标准的onbeforeunload弹出框将与my message变量中的文本一起出现。然后,如果用户点击Cancel,onunload事件将不会执行,用户将停留在当前页面上。但是如果用户点击OK,那么onunload事件应该触发,然后执行我的注销类 这就是正在发生的事情: 需要时会出现弹出窗口,取消按钮也会起作用。但是如果用户单击OK,onunload事件似乎触发得太快,我的注销类无法执行,因为它从未注销它们 我知道我的注销类是有效的,因为如果

这就是我的想法: 当用户单击后退、刷新或关闭窗口时,标准的onbeforeunload弹出框将与my message变量中的文本一起出现。然后,如果用户点击Cancel,onunload事件将不会执行,用户将停留在当前页面上。但是如果用户点击OK,那么onunload事件应该触发,然后执行我的注销类

这就是正在发生的事情: 需要时会出现弹出窗口,取消按钮也会起作用。但是如果用户单击OK,onunload事件似乎触发得太快,我的注销类无法执行,因为它从未注销它们

我知道我的注销类是有效的,因为如果我在onbeforeunload中调用flex.unloadMethod,它会注销它们


我已经研究了一个星期了,看起来我很接近,但我把一些东西放错地方了。如果您有任何示例或建议,我们将不胜感激。

因此,我在Sunil D的帮助下解决了我的问题中的一些问题。onunload事件触发太快,无法触发我的事件,因此我决定不包含警告消息,而是使用onbeforeunload事件将用户一起注销:

<script type="text/javascript">

window.onbeforeunload=before;
window.onunload=after;

function before(evt)
{
   var message="If you continue, your session will be logged out!";
   if(typeof evt=="undefined"){
      evt=window.event;
   }
   if(evt){
      evt.returnValue=message;
   }
}

function after()
{
   var flex=document.${application}||window.${application};
   flex.unloadMethod(); //calls the flex class containing the "unloadMethod()" which
                        //calls the logout.jsp that does the actually dropping of credentials
}

</script>

window.onbeforeunload=before;
window.onunload=after;
前功能(evt)
{
var flex=document.${application}| | window.${application};
flex.unloadMethod();//调用包含“unloadMethod()”的flex类
//调用logout.jsp来实际删除凭据
}
后功能(evt)
{
}

因此,我在Sunil D的帮助下解决了我的问题中的一些问题。onunload事件触发太快,无法触发我的事件,因此我决定不包含警告消息,而是使用onbeforeunload事件将用户全部注销:

<script type="text/javascript">

window.onbeforeunload=before;
window.onunload=after;

function before(evt)
{
   var message="If you continue, your session will be logged out!";
   if(typeof evt=="undefined"){
      evt=window.event;
   }
   if(evt){
      evt.returnValue=message;
   }
}

function after()
{
   var flex=document.${application}||window.${application};
   flex.unloadMethod(); //calls the flex class containing the "unloadMethod()" which
                        //calls the logout.jsp that does the actually dropping of credentials
}

</script>

window.onbeforeunload=before;
window.onunload=after;
前功能(evt)
{
var flex=document.${application}| | window.${application};
flex.unloadMethod();//调用包含“unloadMethod()”的flex类
//调用logout.jsp来实际删除凭据
}
后功能(evt)
{
}

问题很可能发生,因为浏览器没有给您足够的时间让事件处理程序完成工作。因为用户正在离开,所以您希望在这些场景中执行尽可能少的代码,以便给代码足够的时间来完成。我会尝试通过Javascript而不是Flash的AJAX调用触发logout.jsp。是的,谢谢你的评论。我现在意识到我想做的似乎不可能。相反,我将完全绕过弹出窗口,以便执行logout.jsp。(见答案)再次感谢您的回复!问题可能会发生,因为浏览器没有给您足够的时间让事件处理程序完成工作。因为用户正在离开,所以您希望在这些场景中执行尽可能少的代码,以便给代码足够的时间来完成。我会尝试通过Javascript而不是Flash的AJAX调用触发logout.jsp。是的,谢谢你的评论。我现在意识到我想做的似乎不可能。相反,我将完全绕过弹出窗口,以便执行logout.jsp。(见答案)再次感谢您的回复!