Ao editar uma página em meu sistema, um usuário pode decidir navegar para outro site e, ao fazer isso, pode perder todas as edições que não salvou.
Gostaria de interceptar qualquer tentativa de ir para outra página e solicitar que o usuário tenha certeza de que deseja que isso aconteça, pois pode perder seu trabalho atual.
O Gmail faz isso de maneira muito semelhante. Por exemplo, escreva um novo e-mail, comece a digitar no corpo da mensagem e insira um novo local na barra de endereço (digamos twitter.com ou algo assim). Ele solicitará a pergunta "Tem certeza?"
Idéias como replicar isso? Estou visando o IE8, mas gostaria de ser compatível com FF e Chrome também.
javascript
javascript-events
internet-explorer
Chris Ballance
fonte
fonte
Respostas:
Semelhante à resposta de Ghommey, mas também suporta versões antigas do IE e Firefox.
fonte
var foo, bar;
é o mesmo quevar foo;
var bar;
Veja este artigo. O recurso que você está procurando é o onbeforeunload
Código de amostra:
fonte
Em vez de um pop-up de confirmação irritante, seria bom deixar um pouco (questão de milissegundos) para gerenciar com êxito a postagem dos dados não salvos no servidor, que gerenciei para meu site escrevendo um texto fictício no console como este:
Editar: Veja também Synchronous_AJAX e como fazer isso com jquery
fonte
SCHEDULED_REQUEST
é um objeto que acumula qualquer informação não urgente que deva ser enviada ao servidor, como um buffer de dados, juntando efetivamente várias solicitações a uma (claro que o url dessas solicitações é o mesmo). Usar uma solicitação Ajax síncrona antes de descarregar deve resolver o problema entre navegadores, como você disse. Obrigado pelo seu valioso comentário!Tenho usuários que não preencheram todos os dados necessários.
fonte