似乎总是在事件侦听器回调document.hasFocus()
的上下文中返回 false 。visibilitychange
我知道我可以使用document.hidden
,但我更喜欢使用hasFocus()
,因为当它是真的时它会更窄一些。
document.addEventListener('visibilitychange', function() {
console.log(document.hasFocus()) // always false
console.log(document.hidden) // "more correct"
});
我更想知道为什么会这样。是不是因为每次visibilitychange
被调用时document.hasFocus()
实际上都不是真的,因为document
必须聚焦但在被调用之前不会发生这种情况visibilitychange
?
示例1,我们从tabA切换到tabB ->document.hasFocus()
设置为false
然后visibilitychange
运行。示例 2,我们从 tabB 切换回 tabA ->visibilitychange
运行,document.hasFocus()
仍然是 false,因为我们在技术上没有专注于文档,因此它返回 false?只有当我们鼠标点击进入文档时才会document.hasFocus()
成立?