Fico pensando em um caso mais familiar possível para ilustrar a
utilidade das duas funções e a melhor que me vem à cabeça é o Gmail. Já
pensou em fazer algo parecido com o Gmail? Quando o usuário fechar a
janela e alguma requisição estiver em processamento, ele dá um aviso
sobre ela, para evitar perda sem necessidade.
Muita gente pensa que o evento utilizado para fazer tal proeza é o
evento “onunload” mas não é. Existe uma pequena diferença entre os dois
eventos.
O evento onunload
O evento onunload em sua tradução quer dizer:
“quando descarregar”. Ele é responsável por executar uma instrução
quando a página for fechada, mas CUIDADO! A utilização deste evento não é muito confiável quando se trata de navegadores
como Internet Explorer e AJAX ao mesmo tempo. O IE às vezes está de mal
humor e simplesmente ignora o evento, não executando a instrução. Se
a instrução envolver AJAX, ela está ainda mais fadada ao fracasso.
Exemplo
<script language="JavaScript"><br />window.onunload = Sair;<br />function Sair()<br />{<br /> return "A página foi fechada";<br />}<br /></script>O evento onbeforeunload
Traduzindo onbeforeunload para o português, quer dizer: Antes de descarregar. O evento onbeforeunload funciona um pouco diferente do onunload. O evento onbeforeunload
é chamado ANTES de a janela ser fechada. É mais eficiente, pois ele não é
executado em concorrência (junto/ao mesmo tempo) com o fechamento da
janela, o que pode fazer com que algo seja carregado pela metade (de
forma interminada).
Exemplo
<script language="JavaScript"><br />window.onbeforeunload = ConfirmExit;<br />function ConfirmExit()<br />{<br /> //Pode se utilizar um window.confirm aqui também...<br /> return "Mensagem de fechamento de janela....";<br />}<br /></script>Pesquisando sobre este evento eu notei que o jQuery não da suporte ao evento onbeforeunload. Se alguém descobrir por que, ganha um doce. x)
[]’s







