0

ブラウザウィンドウにフォーカスがあるかどうかを検出し、フォーカスされていない場合はajax呼び出しを強制終了しようとしています。基本的に、ユーザーが一定時間アイドル状態になると、ajaxキルは終了しますが、ブラウザーがフォーカスを合わせると再開します。Facebookがやっていると思います。

これが私が持っているものです:

$(document).ready(function(){

        // window.onunload = function(){alert('closing')};

        // mainmode();

        $('#alertbox').click(function(){
                $('#alertbox').slideUp("slow");
        });


        setInterval(function(){

            // Check focal point
            var window_focus = true;

            $(function() {
               $(window).focus(function() {
                    window_focus = true;
                    console.log('Focus');
                });

                $(window).blur(function() {
                    window_focus = false;
                    console.log('Blur');
                });
            });


            if(window_focus == true){
                console.log('in focus');
                waitForMsg();
            }else{
                console.log('out of focus');
            }

        }, 5000);





    });

waitformsgは私のajax呼び出しです。5秒間隔を設定したところ、テストブラウザでおかしくなっているようです。これもおそらく最善の方法ではありません。

また、それは私のajax呼び出しを殺すのではなく、代わりにそれを乗算しているようです。xhr.abort()を使用する必要がありますか?

助けてくれてありがとう。

4

1 に答える 1

0

変更されたコード;

$(document).ready(function(){

    // window.onunload = function(){alert('closing')};

    // mainmode();

    $('#alertbox').click(function(){
            $('#alertbox').slideUp("slow");
    });
    // Check focal point
    var window_focus = true;


           $(window).focus(function() {
                window_focus = true;
                console.log('Focus');
            });

            $(window).blur(function() {
                window_focus = false;
                console.log('Blur');
            });


    setInterval(function(){
        if(window_focus == true){
            console.log('in focus');
            waitForMsg();
        }else{
            console.log('out of focus');
        }

    }, 5000);
});
于 2013-03-13T18:07:42.673 に答える