0

我正在尝试检测浏览器窗口是否处于焦点状态,如果不是,则终止 ajax 调用。基本上,如果用户闲置了一段时间,那么 ajax kills 就会死掉,但是一旦浏览器成为焦点,它就会重新开始。我认为 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 回答