29

明らかに、window.onbeforeunload は、私が遭遇したすべての問題から見てきたように、Chrome でかなりの問題に遭遇しました。最近の回避策は何ですか?

私が仕事に近づいている唯一のものはこれです:

window.onbeforeunload = function () { return "alert" };

ただし、return "alert" を alert("blah") のようなものに置き換えると、Chrome から何も得られません。

この質問で、Google が意図的にこれをブロックしていることがわかりました。彼らにとっては良いことですが、誰かがウィンドウを閉じたときに AJAX 呼び出しを行いたい場合はどうすればよいでしょうか? 私の場合、誰かが私の Web サイトのチャットルームを離れたときに、ウィンドウが閉じられたことを知らせたいと考えています。


(a): AJAX を配置できるように window.onbeforeunload 呼び出しを修正する
か、
(b): Chrome でウィンドウが閉じられたことを判断する別の方法を取得する方法があるかどうかを知りたい

4

5 に答える 5

15

答え:

$(window).on('beforeunload', function() {
    var x =logout();
    return x;
});
function logout(){
        jQuery.ajax({
        });
        return 1+3;
}

少しミックスしてマッチさせましたが、それは私にとってはうまくいきました。1 + 3は、ログアウト関数が呼び出されていることを確認します(終了しようとすると、ポップアップで成功した場合は4が表示されます)。

于 2012-03-09T03:01:41.607 に答える
4

ここでは、より直接的なアプローチを示します。

$(window).on('beforeunload', function() {
    return "You should keep this page open.";
});

返されるメッセージは、Chrome が既に表示しているメッセージに何も追加する必要がない場合は空の文字列を含め、任意のメッセージにすることができます。結果は次のようになります。

ここに画像の説明を入力

于 2015-06-29T17:18:06.530 に答える
3

MDNによると、

この関数は、文字列値を Event オブジェクトの returnValue プロパティに割り当て、同じ文字列を返す必要があります。

これは次のとおりです

window.addEventListener( 'beforeunload', function(ev) { 
    return ev.returnValue = 'My reason';
})
于 2016-06-21T15:12:40.010 に答える