Javascript-检测窗口是否处于非活动状态但仍可见

时间:2019-06-11 01:49:55

标签: javascript window visibility

A number of other answers涵盖了正在运行的Javascript脚本如何判断其当前窗口是否处于活动状态。但是,这是一组相当严格的选择,并且(例如)之间没有区别

  1. 最小化窗口
  2. 非活动标签
  3. 一个浮动窗口,部分被其他程序的浮动窗口遮盖了
  4. 在一个监视器上全屏显示的标签,而用户在另一监视器上的另一个窗口中执行操作。

所有这些都算作无效,尽管在​​后两种情况下该网页仍对用户可见。

虽然有证据表明this may be technically impossible given how web browser sandboxes work,但我仍然希望能够发现上述两者之间的差异。例如,为(1)或(2)暂停动画,但为(3)或(4)保留动画。我想知道是否Javascript(加上框架,我想是WebAssembly)提供了一种机制来确定这一点,否则,是否有任何特定的浏览器具有从一页的javascript代码中进行确定的机制。

1 个答案:

答案 0 :(得分:8)

不能。不久前,我在一个项目中研究了此问题,活动与不活动是浏览器唯一的区别。

有关系统中其他窗口位置的信息不会传递给浏览器,尤其是考虑到该路由可能会被反向工程以暴露安全风险时,尤其如此。在系统中其他程序正在执行的操作中,每个窗口都保持黑暗是更加安全的。

您可以基于当前窗口-for example detecting the opening of a print dialogue中发生的事件收集信息,但不能从其他窗口中收集信息。

Page Visibility API95% coverage,可能是您能找到的最接近的商品-但您已经知道这一点,因为它是您链接的每个问题中的最高答案。你真不走运。