Jak sprawdzić, czy zwolnienie strony w ASP to postBack

Wydaje się to powszechnym pytaniem, ale wyszukiwanie nic nie zwraca.

Mam następujący kod, który jest wykonywany przed rozładowaniem strony. Problem polega na tym, czy rozładowanie jest odsyłaniem zwrotnym, nie chcę wystrzelić mojego ostrzeżenia do użytkownika, ale nie wiem, jak odróżnić wiadomość zwrotną od użytkownika nawigującego do na przykład inna strona.

<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>

Uruchamianie skryptu za kodem, tzn. Jeśli Page.IsPostBack wtedy ustawiona zachęta nie jest opcją.

Jakieś pomysły?

EDYTOWAĆ:

Oto rozwiązanie, które skończyło się na:

<code> function DoNotPrompt() {
              prompt = false;
        }
</code>

Następnie dodałem to do wszystkich elementów sterujących, w których użytkownik może zrobić coś, co skutkuje wysłaniem wiadomości z powrotem.

<code>OnClientClick="DoNotPrompt()
</code>

Następnie zaznaczono tę flagę i zwrócono ciąg w „beforeunload”, jeśli użytkownik naprawdę oddalał się od strony, tj. Nie był to postback.

Musiałem również użyć tego kodu: var magicInput = document.getElementById ('__ EVENTTARGET');

<code>    if (magicInput && magicInput.value) {
        // the page is being posted back by an ASP control 
        prompt = false;
    }
</code>

Ponieważ posiadałem niestandardową kontrolę użytkownika, która była listą i nie mogłem dodać powyższej metody. Użyto tego do przechwycenia tego zdarzenia i ustawienia flagi na false.

Nie najbardziej eleganckie rozwiązanie.

Dzięki, Michael

questionAnswers(3)

yourAnswerToTheQuestion