首页 > 解决方案 > 在 onvisibilitychange 回调中调用 document.hasFocus() 时总是返回 false

问题描述

似乎总是在事件侦听器回调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()成立?

标签: htmlevent-listenervisibilitychange

解决方案


推荐阅读