检测窗口是否可见

时间:2012-09-21 18:55:48

标签: javascript analytics

  

可能重复:
  Javascript: Is there any way to detect that window is currently active? (i.e. is beening shown on active tab/window)

我有一个基于网络的仪表板,可以向医院的护士等显示关键的时间敏感信息。面临的挑战是,如果仪表板未打开或最小化,它们将无法看到消息并能够响应。我目前跟踪应用程序运行的时间百分比(它每10秒通过AJAX轮询一次新消息,这样我就可以很容易地看到它每小时执行的请求数量等等),但这并不能告诉我应用程序是否已最小化

一种方法是使用onfocus / onblur,但效率有限,因为部署它的大多数计算机都是双监视器机器,它们通常会将仪表板保持打开状态在另一个屏幕上使用临床信息系统时屏幕。使用焦点/模糊方法,此状态将被视为“未聚焦”,但我希望将其视为“打开”我的统计数据。

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

1 个答案:

答案 0 :(得分:11)

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

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