<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, он отключит их.
Я исследовал это уже неделю, и кажется, что я близок, но я что-то кладу не в то место. Если у вас есть примеры или советы, буду признателен.