[2] Document
オブジェクトの hidden
属性は、
文書が表示されているかを返します。
[16] Document
オブジェクトの visibilityState
属性の値 hidden
、
visible
は文書が隠れていること、いないことをそれぞれ表します。
[17] これら2つの「hidden」の意味は若干異なっています。
visibilityState
属性の値 visible
[23] 最上位閲覧文脈に含まれている Document
がどこかの画面に一部分でも表示されているなら visibilityState
属性は visible
を返さなければなりません。また >>7
の場合も visible
で構いません。 >>18
[45] 文書の可視性状態は、文書が閲覧文脈中にあり、 それが最上位閲覧文脈である時のみ定義されているようです。
[35] 文書の可視性状態が可視であるか隠れであるかは、 次のように判断されます >>36。
[70] アクセシビリティーツールにしか言及がありませんが、 IME なども同様と思われます。
[52] 隠れ状態は、可視状態とは違う動作となることがあります。
navigator.vibrate
が無視されるかどうかは、
document.hidden
属性の値に依存する >>27
と以前はされていましたが、現在は可視性状態に依存する形に改められています。[59] Chrome は非表示状態のタブの活性文書も捨てることがあるようです。
[51] 捨てる正確な条件はわかりませんが、一部 fetch が実行中でも平気で捨てるようで、 困ったものです。
[60] POST
で作成されたページも勝手に捨てられて、
再表示できずにかわりに再読込を促すネットワークエラーが表示されるのも、
困ったものです。
[55] Webブラウザーは次のような点に注意が必要です。POST
で作成された文書を捨てるべきではありません。
[68]
非表示であっても、他の窓の文書から参照されていたり、
ワーカーや postMessage
を通じて通信していたりすることがあります。
BroadcastChannel
で通知を受け付けているかもしれません。
Webブラウザーはどの文書を捨てても問題が出ないか、慎重に判断する必要があります。
[71] Chrome は最前面のタブに表示していても窓が隠れている状態なら、 破棄してしまうことがあります。困ったもんです。。。
[73] Chrome は開発者コンソールを開いていても捨ててしまいます。 困ったものです。
[74] Chrome は捨ててしまうまでいかないまでも、 動画の再生を停止してしまうことがあります。 (音声の再生は継続されます。) Windows で画面撮影用のソフトウェアを使って Chrome の画面を録画記録しながらビデオ会議をしつつ、 表に他の画面を開いているような場合に、 (録画されてることを Chrome は検知し得ないので、 平気で動画再生を止めてしまい、) 音声のやり取りは続いているのに動画が真っ暗になってたりして、 ほんと困ります。。。
[75] Chrome は最前面の窓の最前面のタブですら捨てちゃうことあった! やばすぎ!
[76] その割にメモリー満杯近くなのになぜか破棄されない背景タブとかあって謎だよね。
[77] Xユーザーのymrlさん: 「ブラウザバックで広告出るやつも嫌いなんだけど、それ以上にブラウザのタブがアクティブでなくなったとき全面広告に切り替わるやつが嫌い。たぶんvisibilitychangeイベントとdocument.visibilityStateでやってるやつ。いろんなページを見比べて調べ物してる時に集中力が分断されるので。」 / X, , https://x.com/ymrl/status/1824205065055506848
[15] Page Visibility 仕様により追加されました。 WebKit では webkitHidden
として実装されています 。 WinIE では msHidden
、
Firefox では mozHidden
も実装されていました。
Fixed WebAudio to resume when moving from background to foreground tab (r208092)
[67] Background Tabs in Chrome 57 | Web | Google Developers () https://developers.google.com/web/updates/2017/03/background_tabs
[69] Vibration API Recommendation errata · w3c/vibration@b844ba9 ( 版) https://github.com/w3c/vibration/commit/b844ba923d9a4c9b04398dd793011b5ace48f242
[72] 大山ゆっけ(蘇る鈴木佑輔)さんはTwitterを使っています 「Chromeが画面裏にあるウィンドウのアプリ動作を止めるという糞みたいな糞機能を実装したせいでブラウザゲーム複数同時進行勢から大量の悲鳴が上がっているという。」 / Twitter (, ) https://twitter.com/trinity_site/status/1455121637796241418