ユーザーがページを離れたときにデータを投稿しようとしています。ようやく実用的な解決策を見つけましたが、ユーザーが去ったときに確認ダイアログが表示されます。私が試してみました return null;
が機能しませんでした。ダイアログを無効にすることは可能ですか?
window.onbeforeunload = function() {
$.post("track.php", {
async: false,
refid: refid,
country: country,
type: type,
});
return '';
}
Mozilla Developer Networkページ から:
このイベントが非void値を返すと、ユーザーはページのアンロードを確認するよう求められます。
これは、確認プロンプトのトリガーを回避するために、ハンドラーの戻り値がundefined
(''
、false
、またはnull
ではない)である必要があることを意味します。
window.onbeforeunload = function() {
$.post("track.php", {
...
});
return undefined;
}
JavaScriptでは、戻り値をまったくスキップして同じ結果を得ることができます。
Jqueryを使ったコーヒースクリプトでは、それは次のようなものです
$(document).ready ->
$(window).bind('beforeunload', ->
#put your cleanup code here
undefined
)
ダイアログを無効にしたい場合は、
window.onbeforeunload = function() { ... return; }
の代わりに
window.onbeforeunload = function() { ... return ''; }
。
お役に立てば幸いです。
これをテストしてください:
$(window).on('beforeunload', function (e) {
if (e.originalEvent) $.post("track.php", {
async: false,
refid: refid,
country: country,
type: type,
});
else $.get("", {
async: false
});
$(this).trigger('beforeunload');
}
これは多くの役に立たないリクエストを作成しますが、最初のリクエストがサーバーに到達するのに十分な時間を与えるはずです。
私はこれを使用して動作させる本当に簡単なトリックを見つけました
$(window).bind('onbeforeunload', function () {
$.post("track.php", {
async: false,
refid: refid,
country: country,
type: type,
});
});