<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,它会将它们记录下来。
我已经研究了一个星期了,似乎我已经关闭,但我把东西放在了错误的地方。如果您有任何示例或建议,我们将不胜感激。
答案 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>