Primeiramente, a intenção desse título gigante é pra facilitar a quem procurou por essa solução a um tempão e nunca achou. Eu sou um deles!
. Isso não é do outro mundo, qualquer um poderia ter feito ou até já fez, mas não disponibilizou.
Bom tarde a todos! Pensando a gente sempre chega lá! Hoje pela manhã resolvi tentar solucionar a grande dificuldade que temos em detectar quando o usuário fechar o browser realmente ou se deu F5! Bom, acredito que tenha solucionado!!
Inicialmente eu tentei atribuir um atributo ao <body> com a função onunload=”". Isso foi o primeiro pensamento e lógico, completamente incompleto! Depois de muita caducada cheguei a seguinte solução:
Bibliotecas utilizadas:
- jQuery (Não é obrigatório, pode ser qualquer uma.)
Explicação:
- Ao carregar a página, atribuimos o atributo ou você pode deixar já no html a função onunload=”" na tag <body>. Eu prefiro atribuir através de alguma biblioteca. (Eu utilizei jQuery).
- Atruímos a tecla “F5″ além de sua ação nativa a remoção do atributo onunload=”" da tag <body>. Fazendo isso, evitamos que a ação de fechar do browser seja executada também quando atualizarmos a página. Este é o grande vilão do problema do onunload.
- A todos os links, precisamos atribuir também a remoção do onunload=”" da tag <body>, pois, quando clicamos em algum link damos refresh na página, e seguindo a mesma lógica do F5, precisamos retirar também a função do onunload=”".
- É isso! Nada mais. Agora vamos ao código:
Javascript:
Entende-se que você saiba carregar a biblioteca jquery e o arquivo shortcut.js.
- $(document).ready(function(){
- $(‘body’).attr(‘onunload’,”alert(‘FECHAMENTO DE PÁGINA’);”)
- $(‘a’).click(function()
- {
- $(‘body’).removeAttr(‘onunload’,”);
- });
- });
- shortcut.add(“F5″,function()
- {
- $(‘body’).removeAttr(‘onunload’,”);
- history.go(0); //Havia pensando em location.href=”, porém teriamos que passar a página. Um amigo sugeriu uma melhor solução, que é essa. by Luiz Tiago
- return false;
- });
Considerações:
Como eu havia falado, pode não ser a melhor solução, porém, funcionou para mim. Testei em: Firefox/Chrome/IE. Espero ter ajudado ao pessoal. Me surgiu uma dúvida, porém não tive oportunidade de testar ainda com formulários, quem tiver afim de testar e comentar pra melhorarmos a solução, estamos ae.
That’s all Folks.
Djalma Araújo
www.djalmaaraujo.com.br


