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 que você perca alguma alteração.
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
Uma tradução para OnUnload é “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. Quando o IE
está de mal humor e simplesmente ignora o evento, não executando a
instrução que você programou para ele fazer. Se a instrução envolver
AJAX, ela está ainda mais fadada ao fracasso, e o seu usuário
provavelmente vai ficar muito triste.
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: Antes de descarregar. O evento OnBeforeUnload
funciona um pouco diferente do OnUnload. O 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 dá suporte ao evento OnBeforeUnload. Se alguém
descobrir o porquê, ganha um doce. x)
[]’s







