Leandro Vieira Pinho´s Blog

Just another WordPress weblog

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:

Exemplo do box de confirmação utilizado junto ao evento onbeforeunload

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

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.

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…

Leave a Comment