0

誰かがFirefox、Chrome、IE、Safariの終了ボタンを押したときに制御したり、ファンの閉じるボタンを押してデータベースから削除したりするときに制御するにはどうすればよいですか。実際、私はそれを知っています。私が得た唯一の問題は、そのボタンの押下をキャッチする方法です。

いくつかのコードを取得しましたが、機能していないようです。私が得たコードは次のようになります

私のdefault.aspx.csで

public partial class _Default : System.Web.UI.Page, System.Web.UI.ICallbackEventHandler


string callBackReference = Page.ClientScript.GetCallbackEventReference(this, "arg", "LogOutUser", "");
        string logOutUserCallBackScript = "function LogOutUserCallBack(arg, context) { " + callBackReference + "; }";
        Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "LogOutUserCallBack", logOutUserCallBackScript, true);

void System.Web.UI.ICallbackEventHandler.RaiseCallbackEvent(string eventArgument)

     _callBackStatus = "failed";

     // log out the user by deleting from the LoggedInUser table
     DataClassesDataContext db = new DataClassesDataContext();

     var loggedInUser = (from l in db.BrugerOnlines
                         where l.BrugerId == Convert.ToInt32(Session["ChatUserID"])
                         && l.RumId == lb
                         select l).SingleOrDefault();

     db.BrugerOnlines.DeleteOnSubmit(loggedInUser);
     db.SubmitChanges();

     var besvarer = (from p in db.Rums where p.FK_Bruger == Session["SupportAdd"].ToString() select p).SingleOrDefault();
     db.Rums.DeleteOnSubmit(besvarer);
     db.SubmitChanges();
     // insert a message that this user has logged out
     this.sendbesked("Bruger har lukket siden " + DateTime.Now.ToString());

     _callBackStatus = "success";
 }
string  System.Web.UI.ICallbackEventHandler.GetCallbackResult()
 {
     return _callBackStatus;
 }

私のdefault.aspxでは、次のようになります。

ページ上部の JavaScript では、次のようになります。

function LogOutUser(result, context) {
        // don't do anything here
    }

    function LogMeOut() {
        LogOutUserCallBack();
    }

<div onload="SetScrollPosition()" onunload="LogMeOut()">
</div>

私が使用するライブラリはhttp://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.js であり、このコードがその一部であることはわかりません

 $(function () {
    var timeout = 60000;
    $(document).bind("idle.idleTimer", function () {
        // function you want to fire when the user goes idle
        $.timeoutDialog({ timeout: 1, countdown: 60, logout_redirect_url: 'http://www.aspdotnet-suresh.com', restart_on_yes: true });
    });
    $(document).bind("active.idleTimer", function () {
        // function you want to fire when the user becomes active again
    });
    $.idleTimer(timeout);
});
4

3 に答える 3

0

ページの本文のonBeforeUnloadでメソッドを呼び出します

于 2012-12-24T13:23:19.483 に答える
0

ユーザーがブラウザを閉じたときに何らかのアクションを実行するだけでよい場合。

ボタンイベントをキャッチする理由がわかりません。

ボタンを押すXSession_End

処理するだけglobal.aspx Session_End

この例のように:

global.asaxでセッション終了を処理する方法は?

注:これは、ユーザーが終了したときと同じ瞬間には発生しませんが、表示がタイムアウトしたときに発生します

于 2012-12-24T13:23:38.570 に答える
0
  1. 使用しているjQuery idleTimer プラグインは、ページのアイドル時間を検出し、ユーザーをリダイレクトしているタイムアウトに基づいています。

  2. 以下を使用できます: jQuery unload Event :

ユーザーがページから移動すると、unload イベントが window 要素に送信されます。これは、多くのことの 1 つを意味する可能性があります。ユーザーがリンクをクリックしてページを離れたか、アドレス バーに新しい URL を入力した可能性があります。進むボタンと戻るボタンがイベントをトリガーします。ブラウザ ウィンドウを閉じると、イベントがトリガーされます。ページのリロードでも、最初にアンロード イベントが作成されます。

于 2012-12-24T13:26:59.120 に答える