Gibt es eine Möglichkeit zu wissen, dass Benutzer verlassen eine Seite mit asp.net?
Meine Frage ist ein wenig kompliziert. glaube ich zumindest. Vielleicht auch nicht, sowieso. Ich möchte wissen, ob es keine Möglichkeit zu wissen, ob der Benutzer die Seite verlassen. Was, wenn er klickt auf "zurück " Taste", schließen der Fenster oder ckicking auf einen link auf meiner website. Wenn mein Gedächtnis ist immer noch gut, ich denke, es ist möglich mit JavaScript.
Aber in meinem Fall, ich will ein paar Sachen (die Reinigung der Objekte) in meinem codebehind.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es wirklich keine Möglichkeit, es zu tun. Kein Ereignis wird ausgelöst, wenn der browser geht zurück.
Können Sie es tun, mit Javascript, aber es ist schwierig, am besten.
Sehen die Frage hier.
Dieses Skript funktioniert auch. Es wurde gefunden hier
Können Sie javascript verwenden, um zu sagen, der server, wenn der Benutzer die Seite verlassen. Aber der webserver wäscht Sie die Hände von der Seite, sobald es verlässt den server, während die Benutzer möglicherweise halten Sie die Seite öffnen, für eine Woche.
Wenn Sie javascript auf der Seite, um das Feuer aus einer Ankündigung auf Ihren server, wenn die Seite entladen Sie kann einige Maßnahmen ergreifen. Aber Sie können nicht sagen, wenn er verlässt Ihre Seite für anderen Seiten, anderen Webseite, oder den browser zu schließen.
... Und das Letzte Mitteilung ist nicht garantiert immer gesendet werden, so können Sie sich auf Sie nicht verlassen völlig.
Also mit der javascript-Hinweis zu reinigen Gegenstände (caches oder sessions) ist eine fehlerhafte system. Du bist besser mit cache & Sitzung Aufhebungs-Strategien, die unabhängig von der onunload-Ankündigung.
Wenn das Ziel, diese zu bereinigen Objekte in der code-behind -, ist es gut genug, um Vertrauen auf die session-timeout? Es wäre eine 20-minütige Verzögerung vor der Reinigung, bis die Objekte (oder was auch immer Sie haben Ihre session-timeout festlegen für).
Aber es ist eine einfache und zuverlässige Weise, es zu tun. In Ihrer Global.asax-Datei, die Sie würde nur dazu:
Wie bereits erwähnt, können Sie es unzuverlässig in JavaScript, aber ich gehe davon aus, dass aus der Formulierung Ihrer Frage, die Sie wollen, es zu tun in der Server-side code (der"code-behind").
Unmöglich ist, da die code-behind ausgeführt wird, auf einem anderen computer (dem Webserver) und hat keine Ahnung, was Los ist auf dem computer des Benutzers, es sei denn, der browser sendet eine Anforderung an den server zurück (das erfordert etwas Javascript oder andere client-side code).
Wenn Sie müssen, verwenden Sie die session-timeout-Ereignisse zu bereinigen jedem Staat Informationen, die Sie speichern über die gesamte Lebensdauer einer Anfrage.
Euuwww ... naja ok. Mein problem ist es da ich habe gespeichert in einer Session-variable ein Objekt (mit einem Bündel von such-Kriterien). Durch Speicherung in einer session-variable, wenn der Benutzer zurück zu meiner Seite suchen Ergebnis es wird eine Liste wieder zu dem gleichen Ergebnis wie beim letzten mal. Aber nach einiger überlegung (nicht im code, sondern in meinem Kopf und nach gesehen deine Antwort :oP), will ich hinzufügen, eine boolean-Eigenschaft, die in meinem Objekt, die so etwas bedeuten wie "IsDirty" oder "HasBeenListed". Und wenn ich laden zurück, wenn sein Satz zu schmutzig, es ist gonna Umleitung zu einer anderen Seite.
Danke David.