Quero fazer uma confirmação antes de o usuário sair da página. Se ele disser ok, será redirecionado para uma nova página ou cancelado para sair. Eu tentei fazê-lo com onunload
<script type="text/javascript">
function con() {
var answer = confirm("do you want to check our other products")
if (answer){
alert("bye");
}
else{
window.location = "http://www.example.com";
}
}
</script>
</head>
<body onunload="con();">
<h1 style="text-align:center">main page</h1>
</body>
</html>
Mas confirmar depois da página já fechada? Como fazer isso corretamente?
Seria ainda melhor se alguém mostrasse como fazer isso com o jQuery?
javascript
jquery
kd7
fonte
fonte
Respostas:
onunload
(ouonbeforeunload
) não pode redirecionar o usuário para outra página. Isto é por razões de segurança.Se você deseja mostrar um aviso antes que o usuário saia da página, use
onbeforeunload
:Ou com jQuery:
Isso apenas perguntará ao usuário se ele deseja sair da página ou não; não será possível redirecioná-lo se ele optar por permanecer na página. Se eles optarem por sair, o navegador irá para onde eles disseram.
Você pode
onunload
fazer as coisas antes que a página seja descarregada, mas não pode redirecionar a partir daí (o Chrome 14+ bloqueia os alertas internosonunload
):Ou com jQuery:
fonte
onbeforeunload
, o navegador coloca essa string em sua própria caixa de confirmação. O usoconfirm
é inútilonunload
eonbeforeunload
, porque apenas o navegador pode controlar para onde vai, não você. Confira esta demonstração: jsfiddle.net/3kvAConbeforeunload
,return false
fará com que o navegador mostre "falso" em uma caixa de diálogo. Você precisareturn undefined
se quiser deixar a janela fechar sem nenhum alerta do usuário.Este código quando você também detecta o estado do formulário foi alterado ou não.
Você pode usar a função Serializar formulário do Google JQuery, que coletará todas as entradas do formulário e as salvará na matriz. Eu acho que essa explicação é suficiente :)
fonte
Isso alertará ao sair da página atual
fonte
Foi o que fiz para mostrar a mensagem de confirmação apenas quando tenho dados não salvos
retornar "indefinido" desativará a confirmação
Nota: retornar "null" não funcionará com o IE
Além disso, você pode usar "undefined" para desativar a confirmação
fonte
Para ter um pop-up com o Chrome 14 ou superior, você precisa fazer o seguinte:
O usuário será perguntado se ele quer ficar ou sair.
fonte
jQuery(document)
e sugiro corrigi-lo após todos os seus plugins serem carregados. Além disso, este trecho não envia nenhum alerta ... é apenas uma demonstraçãoreturn
.Você pode usar a seguinte linha única para sempre perguntar ao usuário antes de sair da página.
Para perguntar ao usuário quando algo na página foi modificado, consulte esta resposta .
fonte
Normalmente você deseja mostrar esta mensagem quando o usuário fez alterações em um formulário, mas elas não são salvas.
Siga essa abordagem para mostrar uma mensagem, somente quando o usuário tiver alterado algo
fonte
https://www.w3schools.com/tags/ev_onbeforeunload.asp
fonte
A maioria das soluções aqui não funcionou para mim, então usei a encontrada aqui
Também adicionei uma variável para permitir ou não a caixa de confirmação
fonte
Um pouco mais útil, ative e desative
fonte