Como saber se uma página descarregada no ASP é um PostBack
Esta parece ser uma pergunta comum, mas a pesquisa não está retornando nada.
Eu tenho o seguinte código que executa antes da página descarrega.O problema é que se o descarregamento é um postback eu não quero disparar o meu aviso para o usuário, mas eu não consigo descobrir como diferenciar entre um postback e um usuário navegando para outra página por exemplo.
<code>// This is executed before the page actually unloads $(window).bind("beforeunload", function () { if (prompt) { //prompt return true; } else { //reset our prompt variable prompt = true; } }) </code>
Executar o script no código por trás, ou seja, se o prompt Page.IsPostBack, em seguida, definir o prompt não for uma opção.
Alguma ideia?
EDITAR:
Aqui está a solução que acabei com:
<code> function DoNotPrompt() { prompt = false; } </code>
Em seguida, adicionei isso a todos os controles em que o usuário poderia fazer algo que resultasse em um post de volta.
<code>OnClientClick="DoNotPrompt() </code>
Em seguida, verifiquei este sinalizador e retornou apenas uma string em "beforeunload" se o usuário estava realmente se afastando da página, ou seja, não um postback.
Eu também tive que usar este código: var magicInput = document.getElementById ('__ EVENTTARGET');
<code> if (magicInput && magicInput.value) { // the page is being posted back by an ASP control prompt = false; } </code>
O motivo é que eu tinha um controle de usuário personalizado que era uma caixa de listagem e não consegui adicionar o método acima. Então, usei isso para capturar esse evento e definir o sinalizador como falso.
Não é a solução mais elegante.
Obrigado, michael