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

questionAnswers(3)

yourAnswerToTheQuestion