2009-12-01 15 views
7

私はログアウト時にいくつかの機能を使いたいと思います。ユーザーがブラウザを直ちに閉じて同じ機能を実行したい場合、100ページ以上あるのでページをアンロードすることはできません私のウェブサイトこれは、各ページAsp.netでブラウザを閉じる

からリダイレクトで動作しますので、ウィンドウにはJavaScript + jqueryのを使用して閉じたときにlogout.aspxを呼び出し

+2

できません。 –

+0

ブラウザの終了を検出することは、asp.netとは関係ありません。それはクライアント側のことです。 –

答えて

15
<script type="text/javascript"> 
var closing = true; 
$(function() { 
    $("a,input[type=submit]").click(function() { closing = false; }); 
    $(window).unload(function() { 
     if (closing) { 
      jQuery.ajax({ url: "http://localhost:49591/Account/LogOff", async: false }); 
     } 
    }); 
}); 
</script> 

ありがとうございました。 logout.aspxページのロードイベントで何をしたいかを行います。

上記のスニペットは、マスターページのhtmlに追加する必要があります。

+0

+1、妥当と聞こえます。ブラウザーのクローズはクライアント側(JavaScript)で行われなければならないため、サーバーに返送されないため、通知されません。 – Juri

+0

しかし、OPはページアンロードを使いたくないと言いました。 1つの問題は、このイベントがユーザーがブラウザを閉じたときだけでなく(*一部のブラウザでのみ)、次のページに移動するときにも発生するということです。 – RickNZ

+0

-1これは期待どおりに動作しません –

7

「ログアウト」の場合、ボタンを使用できます。

残念ながら、ユーザーがブラウザを閉じると通知される信頼できる方法はありません。あなたが望んでいないと言ったクライアント側のページ・アンロードを除けば、唯一の選択肢は、定期的なAjaxベースのポーリングです。どちらも醜く悪名高く信頼できない。

一般に、サーバー側のタイムアウトは、より良いアプローチです。

+0

いくつかのコードサンプルを教えてください。 – Prorammer81

1

これはGlobal.asaxのSession_OnEndの目的ではありませんか?

このイベントは、ブラウザが閉じても発生しません。

+2

Session_OnEndは常に信頼できるわけではなく、InProcセッションモードでのみ起動します – JonoW

+0

OK、(痛い)レッスンありがとう;-) –

関連する問題