Como solicitar do usuário uma confirmação ao sair de uma página
February 7th, 2007. Published under ajax, event, javascript, onbeforeunload. 8 Comments.
Tenho visto um recurso interessante em alguns sites e principalmente em aplicativos web a la 2.0. Trata-se de uma solicitação ao usuário quando ele tenta fechar a página ou dirigir-se a outra URL. Quando o usuário executa alguma dessas ações, será necessário uma confirmação para fechar ou sair da página em questão.
Tal recurso é feito utilizando-se do evento onbeforeunload da seguinte maneira:
window.onbeforeunload = function() {
return "Aqui você especifica uma mensagem a ser anexada junto a mensagem padrão do navegador.";
}
Quando o usário tentar fechar a página, apertar a tecla F5 ou navegar para uma outra URL, ele deverá confirmar a sua real vontade de sair da página. Observe um exemplo:

Bom, utilizando a imaginação é possível fazer um bom uso desse recurso, ainda mais com o advento do Ajax e das aplicações on-line.
Infelizmente o evento onbeforeunload não funciona no Opera (ou funciona e eu não sei?), somente no Internet Explorer e a partir da versão 0.9 do Firefox.
8 Comments
Micox on February 8th, 2007
Aí vai do bom senso do desenvolvedor né Jader.
Por exemplo no blogger e no Gmail este recurso é muito bem utilizado.
Cristiano on February 18th, 2007
Concordo com o Jader. Também não gosto deste tipo de controle sobre a navegação do usuário.
leandro on February 20th, 2007
Como o Micox citou acima, em certo momentos e aplicativos tal recurso se faz necessário e pode ser utilizado em benefício do usuário. Descubra como e onde ![]()
Minha intenção com este post, foi demonstrar como realizar tal ação.
Michael Araujo on March 1st, 2007
Tenho uma aplicação que roda internamente na empresa, precisava exatamente disso. As meninas aqui fechavam o navegador antes de faturar o pedido, então o pedido era faturado, mais não era gerada duplicata para o pedido, então era necessário apagar o pedido e fazer tudo novamente. Procurei uma coisa dessas encassavelmente mais não achava então sem querem vi seu post no iMasters e cheguei até seu Blog. Parabéns pelo post.
Davi Amaral on July 18th, 2007
Bem, o recurso é bem útil !
Mas como posso fazer para q não me pergunte isso no caso de um envio de form ?
Cláudio on November 19th, 2007
Michael Araujo, o que chega a ser “encassavelmente”?
Paulo Stradioti on January 9th, 2008
Nem sempre clicar no botão fechar é uma opção. Às vezes é um acidente…
Jader Rubini on February 7th, 2007
Sinceramente, não vejo com bons olhos essa opção.
Creio que se o usuário optou por fechar a janela, é poruqe ele realmente quer fechar a janela, visto que o botão de fechar janelas fica em uma área “morta” da tela.
Ainda no mesmo raciocínio, se o usuário se deu ao trabalho de ir até a barra de endereços e digitar uma url, ele certamente se irritará ao ter ainda que confirmar se é isso mesmo o que ele quer fazer (eu mesmo me irritaria).
Porém, há casos e acasos.
Talvez não seria uma má idéia perguntar ao usuário se ele deseja mesmo sair antes da página antea, por exemplo, de salvar seus dados em tal site.