如何使用Javascript中onbeforeunload / onunload的注销(How to

2019-09-04 02:01发布

<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事件将不会被执行,用户将停留在当前页面。 但是,如果用户点击好吧,那么onunload事件应该断火,然后执行我的注销类。

这是发生了什么:弹出出现需要和取消按钮时也适用。 但是,如果用户点击好吧,这似乎像onunload事件太快了,我退出类执行火灾关闭,因为它从来没有记录他们。

我知道我的退出类工作,因为如果我只是叫我flex.unloadMethod在onbeforeunload,它会记录他们。

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

Answer 1:

所以,我已经想通了一些问题,我与苏尼尔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>


文章来源: How to logout during onbeforeunload/onunload using Javascript