如何使用Javascript在onbeforeunload / onunload期间注销

时间:2013-05-17 14:00:52

标签: javascript flex4 onbeforeunload onunload

<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>

所以这是我的想法: 当用户单击,刷新或关闭窗口时,将出现标准的onbeforeunload弹出框以及位于我的消息变量中的文本。然后,如果用户点击取消,则不会执行onunload事件,并且用户将保持在当前页面上。但是如果用户点击Okay,则onunload事件应该触发,然后执行我的注销类。

这就是发生的事情: 需要时弹出窗口,“取消”按钮也可以。但是如果用户单击Okay,则onunload事件似乎会因为注销类的执行而过快地触发,因为它从不会将其注销。

我知道我的注销类是有效的,因为如果我只是在onbeforeunload中调用我的flex.unloadMethod,它会将它们记录下来。

我已经研究了一个星期了,似乎我已经关闭,但我把东西放在了错误的地方。如果您有任何示例或建议,我们将不胜感激。

1 个答案:

答案 0 :(得分:1)

所以,我在Sunil D的帮助下找出了我的问题的一些问题.onunload事件触发太快,我的事件被触发,所以我决定不包含警告信息,只是记录用户使用onbeforeunload事件关闭所有用户:

<script type="text/javascript">

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

function before(evt)
{
   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
}

function after(evt)
{

}

</script>