Javascript Setinterval和焦点Jquery

Javascript Setinterval和焦点Jquery,javascript,jquery,settimeout,setinterval,Javascript,Jquery,Settimeout,Setinterval,我试图检测浏览器窗口是否处于焦点位置,如果不处于焦点位置,则终止ajax调用。基本上,如果用户空闲一段时间,那么ajax死机将消失,但一旦浏览器进入焦点,它将再次启动。我认为Facebook做到了 以下是我所拥有的: $(document).ready(function(){ // window.onunload = function(){alert('closing')}; // mainmode(); $('#alertbox').cli

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

感谢您的帮助。

修改代码

$(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);
});

您可能需要查看requestAnimFrame。这些操作仅在浏览器处于焦点时执行。@JustinThomas似乎更适合动画,而不是逻辑焦点/模糊操作。。如果你认为我可以用这个,你能发布一个答案吗?是的,但是没有什么可以说你不能用它来做你正在做的事情。看起来它会起作用,除了我的ajax kill仍然运行。。那里有一个设置超时。有没有办法阻止任何正在运行的ajax调用?中止?我认为您应该在window.blur之后停止向服务器发送请求。如果您确实想中止请求(以防需要非常大的服务器资源),请使用xhr.abort。我无法中止。。检查我的新问题: