Como solicitar do usuário uma confirmação ao sair de uma página

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.

9 thoughts on “Como solicitar do usuário uma confirmação ao sair de uma página

  1. 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.

  2. Aí vai do bom senso do desenvolvedor né Jader.

    Por exemplo no blogger e no Gmail este recurso é muito bem utilizado.

  3. Concordo com o Jader. Também não gosto deste tipo de controle sobre a navegação do usuário.

  4. 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.

  5. 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.

  6. Bem, o recurso é bem útil !

    Mas como posso fazer para q não me pergunte isso no caso de um envio de form ?

  7. a internet hoje virou uma verdadeira plataforma, para execução de grandes sistemas, como o meu que estou desenvolvendo um sistema para confecionar bop utilizando linguagem php, considero hoje a internet comparando com um sistema operaciona com a diferença de ao inves de se clicar duas vezes para se executar um programa como e feito nos sistemas operacionais, na internet voce digita um endereço e executa sistemas poderosos, ficando limitado somente pela velocidade da internet nao por uma questao do sistema em si, entao essa confirmação de se fechar a pagina para alguns sites realmente poder nao ser legal mais para sistemas que utiliza a internet sem duvida nenhuma e muito importante