ユーザーがブラウザウィンドウを閉じるとサーバーに通知したいと思います。ウィンドウアンロードでリクエストを送信する時間がありません
私はそれは、それがおそらくマニュアルに言われていることを、事実にもかかわらず、うまく
$(window).bind("beforeunload", function() {
$.get("${contextPath}/notify?direction=logout");
});
と
$(window).unload(function() {
$.get("${contextPath}/notify?direction=logout");
});
と
$(window).unload(function() {
$.ajax({
url: "${contextPath}/notify?direction=logout"
});
});
どちらも仕事のすべてを試してみましたすべきだ。
Firefoxでは、私はウィンドウのクローズ時にのみ通知を受けませんが、ページをリフレッシュすると通知はありません。クロムで私はどちらも持っていない。
私はFirebugまたはChrome Developer Toolsでこのスクリプトをトレースしようとしましたが、トレースされていれば動作するようになっています!だから私はそれが正常に動作しないと思うので、ウィンドウが閉じられたりナビゲートされる前にリクエストを送信する時間がありません。
これは本当ですか?私の仕事を達成するには?
ソリューションは、これが働いた:JavaScriptをブロックしたページのアンロードで実行した場合、ユーザーがページを終了するため
$(window).bind("beforeunload",
function() {
$.ajax({
async: false,
url: 'notify'
});
}
);
最初の考え:AJAXは仕事の間違ったツールです。 SJAX(同期)を使用する必要があります.AJAXは定義上、GUIスレッドを解放して処理を続行します(この場合はアンロード)。 – Shad
この答えをチェックしてください:http://stackoverflow.com/a/9234785/252780 –