根据http://www.w3.org/TR/page-visibility/,
获取时,如果顶级浏览上下文(浏览器的视口中的根窗口)[HTML5]包含的文档根本不可见,则隐藏属性必须返回true。如果顶级浏览上下文包含的文档在至少一个屏幕上至少部分可见,则该属性必须返回false。
但是,使用以下脚本:
setInterval(function() {console.log(document.hidden);}, 1000)
当浏览器在后台运行时,它会一直打印false
,即根本不可见。如果我切换到不同的选项卡,或者最小化浏览器,它会打印true
。
答案 0 :(得分:1)
仅当API完全隐藏时,PageVisibility API才会返回true。如果您的窗口在后台,但即使部分可见,也会返回false。
尝试将其放在后台,使其小于另一个窗口,然后将该窗口置于顶部。它现在返回true。
你可能需要像document.hasFocus这样的东西(或某种组合)。