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

Javascript - Detect if window is inactive but still visible

A number of other answers 已经介绍了 运行 Javascript 脚本如何判断其当前 window 是否处于活动状态。然而,这是一组非常有限的选择,并且不区分(例如)

  1. a 最小化 window
  2. 一个不活动的选项卡
  3. 一个浮动 window 被其他程序的浮动 windows
  4. 部分遮挡
  5. 一个选项卡在一个显示器上全屏显示,而用户在另一台显示器上的另一个 window 中进行操作。

所有这些都算作不活动,尽管在后两种情况下网页仍然对用户可见。

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

你不能。不久前我为一个项目研究了这个,活动与非活动是浏览器可以做出的唯一区别。

有关其他 windows 在系统上的位置的信息不会传递给浏览器,特别是考虑到此路由可能被逆向工程以暴露安全风险。让每个 window 都不知道系统上其他程序正在做什么会更安全。

您可以根据当前 window - for example detecting the opening of a print dialogue 发生的事件收集信息 - 但不能从其他 windows.

收集信息

Page Visibility API has 95% coverage 可能是最接近的 - 但您已经知道这一点,因为它是您链接的每个问题中的最佳答案。你在这里运气不好。