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

6

一篇 关于其他 答案的文章介绍了如何运行JavaScript脚本来判断当前窗口是否处于活动状态。然而,这样做的选择性相当有限,并没有区分(例如)

  1. 最小化的窗口
  2. 未激活的选项卡
  3. 部分被其他程序浮动窗口遮挡的浮动窗口
  4. 一个选项卡在一个监视器上全屏,而用户在另一个监视器上执行操作。

尽管在后两种情况下网页仍然对用户可见,但所有这些都被认为是不活动的

尽管有证据表明由于Web浏览器沙箱的工作方式,这可能在技术上是不可能的,但我仍然希望能够检测上述差异。例如,暂停动画以进行(1)或(2),但保持其进行(3)或(4)。我想知道Javascript(加上框架,我猜,或WebAssembly)是否提供了一种机制来确定这一点-或者,如果失败,则任何特定的浏览器是否具有从一个页面的javascript代码中确定它的机制。
1个回答

8

你做不到。我以前为一个项目调查过这个问题,活动和非活动是浏览器唯一可以区分的。

关于系统中其他窗口位置的信息不会传递给浏览器,特别是考虑到这种路线可能会被反向工程来暴露安全风险。将每个窗口保持在暗中是更安全的,使它们不知道系统中其他程序正在做什么。

您可以根据当前窗口中发生的事件收集信息-例如检测打印对话框的开启-但不能从其他窗口中收集信息。

页面可见性API覆盖95%,可能是您所能接近的最佳选择 - 但是您已经知道了这一点,因为它是您链接的每个问题的顶部答案。在这里你没有运气。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接