确定浏览器选项卡是不是处于活动状态? - IE?

Posted

技术标签:

【中文标题】确定浏览器选项卡是不是处于活动状态? - IE?【英文标题】:Determine if browser tab is active? - IE?确定浏览器选项卡是否处于活动状态? - IE? 【发布时间】:2011-10-22 04:42:07 【问题描述】:

我看过这个:

How to tell if browser/tab is active

和:

Is there a reliable way to determine if a browser tab or window is inactive or not in focus?

第一个链接为现代浏览器提供了一个解决方案,但在 IE7/8 中不起作用。这两个问题都相当老了。确定访问者是否正在查看他们打开的标签的问题是否有解决方案?

我尝试过的几乎所有东西都可以在 Chrome 中正常运行。但是 IE7 就失败了。

我只想设置一个全局变量来说明是否正在查看页面。

var isActive = true;

$(window).focus(function() 
    isActive = true;
);

$(window).blur(function() 
    isActive = false;
);

// test
setInterval(function () 
  console.log(window.isActive ? 'active' : 'inactive'); 
, 1000);

【问题讨论】:

【参考方案1】:

在谷歌上搜索了很多...然后更多...然后更多...4 小时左右后我终于找到了隐藏在互联网深处的这个链接。 cmets 表明存在一个小错误,但它可以满足我的需要。

http://www.thefutureoftheweb.com/blog/detect-browser-window-focus

var isActive = true;
function onBlur() 
    isActive = false;
;
function onFocus()
    isActive = true;
;

if (/*@cc_on!@*/false)  // check for Internet Explorer
    document.onfocusin = onFocus;
    document.onfocusout = onBlur;
 else 
    window.onfocus = onFocus;
    window.onblur = onBlur;

【讨论】:

【参考方案2】:

略有不同,但this was marked as the answer 暗示它有效,这是需要的延迟。不是很优雅,但如果它有效的话。

【讨论】:

也许我的问题不清楚。我不想打开另一个窗口。我只想在浏览器未查看选项卡时停止事件。然后在他们返回选项卡时恢复它们

以上是关于确定浏览器选项卡是不是处于活动状态? - IE?的主要内容,如果未能解决你的问题,请参考以下文章

当用户/选项卡/浏览器处于非活动状态时 JavaScript 播放声音

Vuejs:当特定选项卡处于活动状态时是不是会发出事件(bootstrap-vue)

通过 JavaScript 检查浏览器标签?

当 UISearchController 处于活动状态并选择新选项卡时,UITableView 消失

如何在关闭浏览器选项卡或浏览器时插入数据[重复]

UIB 选项卡 - 设置第二个选项卡处于活动状态