明らかに、window.onbeforeunloadは、遭遇したすべての問題から見たように、Chromeで問題のかなりの部分に遭遇しました。最新の回避策は何ですか?
私が仕事に近づいたのは、 this だけです。
window.onbeforeunload = function () { return "alert" };
ただし、return "alert"をalert( "blah")のようなものに置き換えると、Chromeから何も得られません。
この質問 で、Googleが意図的にこれをブロックしていることを見ました。彼らに良い...しかし、誰かがウィンドウを閉じたときにAJAX呼び出しをしたい場合はどうすればいいですか?私の場合、誰かが私のウェブサイトのチャットルームを離れて、ウィンドウを閉じることによって。
どちらかの方法があるかどうか知りたい
(a):window.onbeforeunload呼び出しを修正して、そこにAJAX
または
(b):Chromeでウィンドウが閉じたことを判断する他の方法を取得します
回答:
$(window).on('beforeunload', function() {
var x =logout();
return x;
});
function logout(){
jQuery.ajax({
});
return 1+3;
}
少しミックスとマッチが、それは私のために働いた。 1 + 3は、ログアウト機能が呼び出されていることを確認します(ポップアップを終了しようとして成功した場合は、4が表示されます)。
より簡単なアプローチを次に示します。
$(window).on('beforeunload', function() {
return "You should keep this page open.";
});
返されるメッセージは、Chromeが既に表示しているメッセージに追加するものがない場合は空の文字列を含む。
[〜#〜] mdn [〜#〜] によると、
この関数は、EventオブジェクトのreturnValueプロパティに文字列値を割り当て、同じ文字列を返す必要があります。
これは以下です
window.addEventListener( 'beforeunload', function(ev) {
return ev.returnValue = 'My reason';
})
69.0.3497.92現在、Chromeは標準を満たしていません。ただし、 バグレポート が提出され、 レビュー があります進捗。
window.addEventListener('beforeunload', function (e) {
// Cancel the event as stated by the standard.
e.preventDefault();
// Chrome requires returnValue to be set.
e.returnValue = '';
});
window.location = 'about:blank';