Posso aparecer uma janela de confirmação quando o usuário está fechando a janela no Safari / Chrome?
-
03-07-2019 - |
Pergunta
No IE e FF, i pode anexar um manipulador de eventos para onBeforeUnload, e passando uma cadeia a uma propriedade do evento, o usuário verá uma caixa de diálogo perguntando-lhe se ele quer continuar com a "descarga" (ou fechamento a janela ou navegar para fora).
Safari e Chrome não suportam onBeforeUnload e onUnload parece ser tarde demais. Existe alguma maneira de replicar a mesma funcionalidade no Safari / Chrome?
NOTA: Eu não estou tentando manter o refém usuário. Eu sei que isso é irritante e un-cool. Na verdade, o meu site vai para grandes comprimentos para que o usuário sair livremente, e ter tudo em seu lugar quando eles voltam. No entanto, eu estou hospedando outros sites dentro de iframes, e às vezes estes decidir se livrar de mim e assumir o navegador, que é o que estou tentando evitar.
Obrigado!
Solução
Isso funciona perfeitamente para mim, tanto Chrome e Safari:
<html><body><p>Test</p>
<script>window.onbeforeunload = function() { return "Sure?"; }</script>
</body></html>
Quando tento fechar a janela, eu recebo a solicitação.
Outras dicas
si StackOverflow usa onbeforeunload
, e ele funciona muito bem para mim no Safari:
function setConfirmUnload(a){window.onbeforeunload=a?function(){return a}:null}
Eu verifiquei em cromo e parece estar funcionando bem usando este:
<body onunload="alert('x');" onbeforeunload="test1();">
Esta questão é coberto em detalhes um pouco mais em outra pergunta mais recente StackOverFlow: Definir onbeforeunload no elemento do corpo no Chrome e IE usando jQuery