Javascript 检测窗口是否可见

Javascript 检测窗口是否可见,javascript,analytics,Javascript,Analytics,可能重复: 我有一个基于网络的仪表板,在医院楼层向护士等显示关键的时间敏感信息。挑战在于,如果仪表板未打开或最小化,他们将无法看到消息并能够做出响应。我目前跟踪应用程序运行的时间百分比(它每10秒通过AJAX轮询一次新消息,这样我就可以很容易地看到它每小时发出多少请求或其他什么),但这并不能告诉我应用程序是否最小化 一种方法是使用onfocus/onblur,但这种方法的有效性有限,因为部署这种方法的大多数计算机都是双监视器机器,它们通常会在一个屏幕上打开仪表板,而在另一个屏幕上使用临床信息系

可能重复:

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

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

检测窗口可见性有什么想法吗?我在想,可能包括一个小的闪光“像素”,并检测它是否可见-还有其他想法吗?

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

是一个跨所有浏览器对其进行抽象的库。如果浏览器不支持页面可见性API,它将使用onblur/onfocus hack

function isPageHidden(){
     return document.hidden || document.msHidden || document.webkitHidden || document.mozHidden;
 }
资料来源:


阅读:

在IE中有没有比onfocus/onblur更好的功能呢?这对现代浏览器来说非常好。不幸的是,我的医院仍然停留在IE7上——在我几周前做的一次测量中,我84%的流量来自旧IE,10%来自Firefox,7%来自Chrome。因此,我可能会使用页面可见性来获得17%的更好的统计数据,但我想我会坚持使用IE用户的onfocus/onblur。你可以使用visibility.js并获得所有这些。你能说服你的用户在IE上安装Chrome Frame吗?visibility.js真的会将这些功能添加到旧浏览器上吗?如果document.hidden为false(未定义),则此代码将尝试document.msHidden等,并最终返回未定义,而非mozilla浏览器为false