TL;DR:我正在开发一个 Chrome 扩展程序,只有当一个选项卡可见且未被另一个窗口覆盖时,我才需要增加计数。有没有办法检测到这一点?
我尝试过使用Page Visibility API,但它的问题是:
想象一下,我有两个并排停靠的窗户。我的重点是窗口“A”中的选项卡“X”。但是,在旁边,我还在窗口“B”的前景中打开了选项卡“Y”。
如果我document.hidden
当时检查选项卡“Y”,它将解析为false
,这就是我想要的。但是,如果我随后扩展窗口“A”以覆盖全屏并让窗口“B”在其后面打开而不是最小化,则document.hidden
选项卡“Y”仍然相等false
,即使从用户视觉的角度来看,该选项卡完全无形的。
将事件侦听器添加到blur
andfocus
事件也无济于事,因为blur
只要添加到的文档失去焦点就会触发,这适用于我的窗口“A”覆盖整个屏幕的情况,但不适合我有窗口'A'和'B'并排的场景。在这种情况下,当标签“Y”失去焦点时,“模糊”事件将被触发,即使标签“Y”在技术上对任何正在查看屏幕的人都是可见的。
我需要的结果如下所示:
- 选项卡“Y”位于非最小化窗口的前景并且未被另一个窗口覆盖:
increaseCount() // regardless of whether the tab is focused or not
- 选项卡“Y”位于非最小化窗口的前景但被另一个窗口覆盖,因此任何人类观察者都看不到其内容:
// don't increase count
有没有办法检测到这一点?