27

jQueryですべてのブラウザのウィンドウ クローズ イベントのみを検出する最良の方法を教えてください。

Xブラウザのボタンをクリックすることを意味しますが、フォーム の送信やリンクwindow.close()を意味するものではありません。多くのスレッドを探していましたが、まだ正しい方法が見つかりません。F5window.location

4

6 に答える 6

41

以下を使用できます。

$(window).unload(function() {
    //do something
}

Unload() は jQuery バージョン 1.8 で非推奨になったため、jQuery > 1.8 を使用する場合は、代わりに beforeunload を使用できます。

beforeunload イベントは、ユーザーが何らかの理由でページを離れるたびに発生します。

$(window).on("beforeunload", function() { 
    return confirm("Do you really want to close?"); 
})

ソースブラウザ ウィンドウのクローズ イベント

于 2013-05-23T06:53:21.050 に答える
10

unload() メソッドは、jQuery バージョン 1.8 で廃止されました。

1.8より古いバージョンを使用している場合

次に使用します-

$(window).unload(function(){
alert("Goodbye!");
});

1.8以降を使用している場合

次に使用します-

window.onbeforeunload = function() {
    return "Bye now!";
};

これがうまくいくことを願っています:-)

于 2013-12-06T07:35:58.783 に答える
6

ブラウザのクローズ イベントをキャプチャするための特定のイベントはありません。しかし、ブラウザーの位置 XY によって検出できます。

<script type="text/javascript">
$(document).ready(function() {
  $(document).mousemove(function(e) {
    if(e.pageY <= 5)
    {
        //this condition would occur when the user brings their cursor on address bar 
        //do something here 
    }
  });
});
</script>
于 2015-07-23T06:03:25.830 に答える
3

mousemove と window.onbeforeunload イベントを組み合わせます:- 監査テーブルの TimeOut を設定するために使用しました。

 $(document).ready(function () {
 var checkCloseX = 0;
        $(document).mousemove(function (e) {
            if (e.pageY <= 5) {
                checkCloseX = 1;
            }
            else { checkCloseX = 0; }
        });

        window.onbeforeunload = function (event) {
            if (event) {
                if (checkCloseX == 1) {

                    //alert('1111');
                    $.ajax({
                        type: "GET",
                        url: "Account/SetAuditHeaderTimeOut",
                        dataType: "json",
                        success: function (result) {
                            if (result != null) {
                            }
                        }
                    });
                }
            }
        };
  });
于 2016-05-13T08:40:09.393 に答える