イベントリスナーのコールバック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()
true になりますか?