Setinterval和Focus Jquery

时间:2013-03-13 18:04:01

标签: javascript jquery settimeout setinterval

我正在尝试检测浏览器窗口是否处于焦点,如果不是,则尝试终止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()?

感谢您的帮助。

1 个答案:

答案 0 :(得分: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);
});