Posso aparecer uma janela de confirmação quando o usuário está fechando a janela no Safari / Chrome?

StackOverflow https://stackoverflow.com/questions/803887

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!

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top