如何检测文件是否重新聚焦?

时间:2016-11-09 08:09:51

标签: javascript jquery html5 javascript-events settimeout

我正在使用带隐藏属性的html5文档对象来检测用户是否已切换到另一个选项卡。如何检查用户是否以相同方式返回当前选项卡?

请参阅我的代码:

var PERIOD_NOT_VISIBLE = 60000;
var PERIOD_VISIBLE = 5000;              
var timestring = 0;

(function callThis(timestring) {

    //update notification

    timer = setTimeout(function() {

    callThis(timestring);                
    }, (document.hidden) ? PERIOD_NOT_VISIBLE : PERIOD_VISIBLE);

})();

每隔5秒进行一次间隔更新通知。当前文件失去焦点时,间隔计时器增加到1分钟。所以这个最新的请求只会在1分钟后运行。

如果用户在完成1分钟之前的任何时间返回文档,他仍然没有更新通知,因为他必须等待当前请求首先完成。只有在那之后计时器才回到5秒。

是否可以检测用户是否已在不等待1分钟后完成请求的情况下返回当前文档?

1 个答案:

答案 0 :(得分:3)

You can use blur and focus event in window to detect it.

$(window).on("blur", function() {
   // do whatever you want
    $("body").append("<p>Windows lost focus</p>");
});
$(window).on("focus", function() {
   // do whatever you want
    $("body").append("<p>Windows got focus</p>");
});

Here is a working example http://jsfiddle.net/uX84X/9/ (Click in result box of jsfiddle to test)