[3] [CODE(DOMi)@en[[[Document]]]] [[オブジェクト]]の [DFN[[CODE(DOMa)@en[[[visibilityState]]]]]]
[[属性]]は、[[文書]]が表示されているかどうかの状態を返します。

* 仕様書

[REFS[
- [11] [CITE@en[Page Visibility (Second Edition)]] ([TIME[2015-11-13 18:23:52 +09:00]] 版) <https://w3c.github.io/page-visibility/#h-visibility-states-and-the-visibilitystate-enum>
- [13] '''[CITE@en[Page Visibility (Second Edition)]] ([TIME[2015-11-13 18:23:52 +09:00]] 版) <https://w3c.github.io/page-visibility/#h-visibilitystate-attribute>'''
]REFS]

* 可視性状態

[12] [[最上位閲覧文脈]]の[F[[[文書]]]]は、
[DFN[[F[[RUBY[[[可視性状態]]]@en[visibility state]]]]]]を持ちます
[SRC[>>11]]。

[7] [[可視性状態]]は、次のいずれかです [SRC[>>11]]。
それぞれ、[[列挙型]] [DFN[[CODE[[[VisibilityState]]]]]] [SRC[>>11]] で対応する値を持ちます。

[FIG(table)[
:s:可視性状態
:c:[F[[CODE[VisibilityState]]]]
:d:意味

:s:[RUBYB[[[隠れ][document.hidden]]]@en[hidden]]
:c:[CODE[hidden][document.hidden]]
:d:[[文書]]は、[RUBYB[[[画面]]]@en[screen]]上でまったく可視状態にありません。

:s:[RUBYB[[[可視]]]@en[visible]]
:c:[CODE[visible][document.hidden]]
:d: [[文書]]は、少なくても一部は画面上で可視状態にあります。

:s: [RUBYB[[[事前レンダリング]]]@en[[[prerender]]]]
:c: [CODE[[[prerender]]]]
:d: [[文書]]は事前レンダリングモードで読み込まれ、まだ可視状態になっていません。
]FIG]

;; [19] 状態の判定については、[[可視]]を参照。

;; [23] 値の変化の挙動については [CODE[visibilitychange]] を参照。

[HISTORY[
[14] かつては [CODE[[[unloaded]]]] もありました [SRC[>>2]]。
[[vendor prefix]] 付きの値も認められていました [SRC[>>2]]。
]HISTORY]

* 取得器

[15] [CODE(DOMi)@en[Document]] [[インターフェイス]]の
[DFN[[CODE(DOMa)@en[visibilityState]]]] [[IDL属性]]は、
[[文脈オブジェクト]]について[[可視性状態を決定する手順]]を実行しなければ[MUST[なりません]] [SRC[>>13]]。
この[[属性]]は[[読み取り専用]]で、[[列挙型]] [CODE[VisibilityState]]
の値を返します [SRC[>>13]]。

[16] [VAR[文脈文書]]の[DFN[[RUBYB[可視性状態を決定する手順]@en[steps to determine the visibility state]]]]
[SRC[>>13]] は、次のようにします。
[FIG(steps)[
= [6] [VAR[文脈文書]]の[F[閲覧文脈]]が [CODE[null]] なら、
== [21] [CODE[hidden]] を返し、ここで停止します。
= [4] [VAR[文書]]を、[VAR[文脈文書]]の[F[閲覧文脈]]の[F[最上位閲覧文脈]]の[F[文書]]に設定します。 [SRC[>>13]]
= [17] [VAR[文書]]の [CODE(DOMa)@en[defaultView]] が [CODE[null]] なら、
== [22] [CODE[hidden]] を返し、ここで停止します。 [SRC[>>13]]
= [18] [VAR[文書]]の[F[可視性状態]]の [F[[CODE(DOMi)@en[VisibilityState]]]]
を返します。 [SRC[>>13]]
]FIG]

;; [9] 値の決定については >>7 の各項を、値の変化のタイミングについては [CODE(DOMe)@en[[[visibilitychange]]]] の項をご覧ください。

;; [20] この手順は[[バイブレーションパターンの処理]]からも呼び出されます。

* 歴史

[5] [[Page Visibility]] 仕様で追加されました。

[REFS[
- [1] [CITE@en[Page Visibility]]
( ([TIME[2011-06-01 21:46:24 +09:00]] 版))
<http://www.w3.org/TR/2011/WD-page-visibility-20110602/>
- [2] [CITE@en[Page Visibility]] ([TIME[2013-05-20 14:09:47 +09:00]] 版) <https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/PageVisibility/Overview.html#dom-document-visibilitystate>
]REFS]

[10] 当初は各[[レンダリング・エンジン]]で [DFN[[CODE(DOMa)@en[[[webkitVisibilityState]]]]]]、
[DFN[[CODE(DOMa)@en[[[mozVisibilityState]]]]]]、[DFN[[CODE(DOMa)@en[[[msVisibilityState]]]]]]
という名前で実装されていました。

* 関連

[8] [[boolean]] で値を返す [CODE(JS)@en[[[document.hidden]]]] [[属性]]もあります。