3

可能重复:
Javascript:有什么方法可以检测到该窗口当前处于活动状态吗?(即显示在活动选项卡/窗口上)

我有一个基于网络的仪表板,它向医院楼层的护士等显示关键的时间敏感信息。挑战在于,如果仪表板未打开或最小化,他们将看不到消息并能够做出响应。我目前跟踪应用程序运行的时间百分比(它每 10 秒通过 AJAX 轮询新消息,因此我可以轻松查看每小时执行多少请求或其他),但这并不能告诉我应用程序是否已最小化.

一种方法是使用onfocus/ onblur,但效果有限,因为部署它的大多数计算机都是双显示器机器,并且它们通常会在一个屏幕上保持仪表板打开,同时在另一个屏幕上使用临床信息系统。使用 focus/blur 方法,这种状态将被视为“未聚焦”,但我希望它对我的统计数据而言算作“开放”。

检测窗口可见性的任何想法?我在想可能包括一个微小的 Flash“像素”并检测它是否可见 - 还有其他想法吗?

4

1 回答 1

12

您可以在支持它的浏览器中使用Page Visibility API。否则,正如您所说,您将需要使用带有 onfocus/onblur 的 hack。

visibility.js是一个在所有浏览器中抽象出来的库。如果浏览器不支持 Page Visibility API,它将使用 onblur/onfocus hack。

function isPageHidden(){
     return document.hidden || document.msHidden || document.webkitHidden || document.mozHidden;
 }

来源:http ://www.nczonline.net/blog/2011/08/09/introduction-to-the-page-visibility-api/

阅读:https ://developer.mozilla.org/en-US/docs/DOM/Using_the_Page_Visibility_API

于 2012-09-21T19:51:07.947 回答