Peça confirmação na página descarregada
-
20-09-2019 - |
Pergunta
No Stackoverflow, quando você está fazendo uma nova pergunta, insira a pergunta e se decidir navegar para longe da página, obtenha uma confirmação "tem certeza".
Eu gostaria de fazer o mesmo no meu aplicativo ASP.NET:
O usuário precisa preencher um questionário e tem a opção de armazenar suas respostas temporariamente. Se o usuário decidir navegar para longe da página sem armazenar temporamente suas respostas, gostaríamos de confirmar e pedir ao usuário para armazenar suas respostas.
Duas questões:
Qual é uma maneira decente de mostrar o pop -up de confirmação antes que a página descarregue no Asp.net?
Estou ciente do evento antes do UNOLLOAD, mas não quero torná -lo um grande hack de JavaScript.Não quero que a confirmação entre quando o usuário clica no botão Salvar (que está salvando as respostas de qualquer maneira)
Solução
Você tem que escrever a ação em
que incêndios antes de uma página ser descarregada.
<HTML>
<head>
<script>
function closeIt()
{
return "Any string value here forces a dialog box to \n" +
"appear before closing the window.";
}
window.onbeforeunload = closeIt;
</script>
</head>
<body>
<a href="http://www.microsoft.com">Click here to navigate to
www.microsoft.com</a>
</body>
</html>
Outras dicas
Você deve prestar sua atenção em Evento "OnBeForunload" Quanto ao botão Salvar, você pode fazer uma lógica de script, por exemplo, cancelar a inscrição neste evento ou então.
Você pode tentar isso:
<button onclick="javascript:doSend()">send</button>
<button onclick="window.xbuttons +='save ';">save</button>
<button onclick="window.xbuttons +='edit';">edit</button>
<script>
window.xbuttons = '';
window.onbeforeunload = function(){
if(!window.xbuttons.match(/save|edit/))
return "Do you want to leave this page?";
}
</script>
Aqui estão as coisas que você deve observar sobre o OnBeSeUnLoad:
- ONBEFOREUNLOAD O evento disparará em todos os A (elementos âncora) com atributo href
- ONBEFOREUNLOAD O evento será disparado quando o local do documento é alterado via JavaScript ou alterando o URL na barra de endereço
- ONBEFOREUNLOAD Evento será lançado em qualquer evento que use JavaScript: pseudo-protocolo