document.hasFocus() 在 onvisibilitychange 回调中调用时总是返回 false

时间:2021-04-21 17:29:44

标签: html event-listener visibilitychange

document.hasFocus() 事件侦听器的回调上下文中,似乎 visibilitychange 总是返回 false。我知道我可以使用 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() 仍然是假的,因为我们在技术上没有关注文档,因此它返回假?只有当我们鼠标点击文档时,document.hasFocus() 才会为真?

0 个答案:

没有答案