So stellen Sie fest, ob das Entladen einer Seite in ASP ein PostBack ist

Dies scheint eine häufige Frage zu sein, aber die Suche gibt nichts zurück.

Ich habe den folgenden Code, der ausgeführt wird, bevor die Seite entladen wird. Das Problem ist, wenn das Entladen ein Postback ist, ich meine Warnung an den Benutzer nicht auslösen möchte, aber ich kann nicht herausfinden, wie zwischen einem Postback und einem Benutzer, der zu navigiert, zu unterscheiden ist eine andere Seite zum Beispiel.

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

Das Ausführen eines Skripts im Code dahinter, d. H. Wenn Page.IsPostBack die Eingabeaufforderung setzt, ist keine Option.

Irgendwelche Ideen?

BEARBEITEN:

Hier ist die Lösung, mit der ich gelandet bin:

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

Ich habe dies dann zu allen Steuerelementen hinzugefügt, bei denen der Benutzer etwas tun kann, das zu einem Postback führt.

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

Dann überprüfte dieses Flag und gab nur eine Zeichenkette in "beforeunload" zurück, wenn der Benutzer sich wirklich von der Seite entfernte, d. H. Kein Postback.

Ich musste auch diesen Code verwenden: var magicInput = document.getElementById ('__ EVENTTARGET');

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

Der Grund ist, dass ich ein benutzerdefiniertes Benutzersteuerelement hatte, das ein Listenfeld war, und ich die obige Methode nicht hinzufügen konnte. Verwenden Sie dies also, um dieses Ereignis abzufangen und das Flag auf false zu setzen.

Nicht die eleganteste Lösung.

Danke, Michael

Antworten auf die Frage(3)

Ihre Antwort auf die Frage