[1] [DFN[[RUBYB[[[最上位閲覧文脈]]]@en[top-level browsing context]]]]は、
[[親閲覧文脈]]のない[[閲覧文脈]]です。[[Webブラウザー]]の[[窓]]や[[タブ]]に相当する[[閲覧文脈]]です。

;; [2] これに対して、[[フレーム]]に相当する[[閲覧文脈]]は[[最上位閲覧文脈]]ではありません。

[3] [[JavaScript]] では [DFN[[CODE(JS)@en[[[window.top]]]]]] [[属性]]により[[最上位閲覧文脈]]の
[CODE(DOMi)@en[[[WindowProxy]]]] オブジェクトにアクセスできます。

[4] [[HTML]] では [CODE(HTMLa)@en[[[target]]]] [[属性値]] [DFN[[CODE(HTML)@en[[[_top]]]]]]
により[[最上位閲覧文脈]]で開くべきことを示せます。

* 仕様書

[REFS[
- [25] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2016-07-21 01:23:16 +09:00]]) <https://html.spec.whatwg.org/#top-level-browsing-context>
- [10] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2016-03-31 07:16:44 +09:00]] 版) <https://html.spec.whatwg.org/#dom-top>
- [8] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-04-25 04:40:19 +09:00]] 版) <https://html.spec.whatwg.org/#garbage-collection-and-browsing-contexts>
]REFS]

* 意味

[18] [[最上位閲覧文脈]]は、[[閲覧文脈]]の[F[親閲覧文脈]]をたどってそれ以上たどれなくなったところの[[閲覧文脈]]です。

[19] 単に「[[最上位閲覧文脈]]」といえば[F[親閲覧文脈]]が [[null]]
である[[閲覧文脈]]のことをいいますし、
ある[[閲覧文脈]]の[F[最上位閲覧文脈]]といえばその[[閲覧文脈]]から[F[親閲覧文脈]]をたどった果てを表します。

[20] [[最上位閲覧文脈]]の[F[最上位閲覧文脈]]は [[null]] です。

* 状態

[5] [[閲覧文脈]]を参照。

* 作成

[6] [[最上位閲覧文脈]]が作成されたら、[[セッション履歴イベントループ]]を[[並列]]に実行しなければなりません。

* 破棄

[23] [[最上位閲覧文脈]]は、[[窓]]や[[タブ]]を[[利用者]]が閉じることによって破棄されたり、
[CODE(JS)@en[window.close]] で破棄されたりします。

[7] [[最上位閲覧文脈]]が破棄されたら、[[セッション履歴イベントループ]]は停止する必要があります。

[9] [[利用者エージェント]]は、[[最上位閲覧文脈]]への[[強い参照]]を持ちます [SRC[>>8]]。
[[閲覧文脈を捨てる]]と、この[[強い参照]]は破棄されます [SRC[>>8]]。

* [CODE(DOMi)@en[Window]] インターフェイス [CODE(DOMa)@en[top]] 属性

[13] 
[DFN[[CODE[window.top]]]]
は、
[[最上位閲覧文脈]]を返します。
現在の[[窓]]が[[最上位閲覧文脈]]なら、その [CODE[Window]]
を返します (つまり [CODE(JS)[[[window.top]] === [[window]]]])。
現在の[[窓]]がそれ以外の[[閲覧文脈]]
([CODE[iframe]] など)
なら、
[[最上位閲覧文脈]]の 
[CODE[Window]]
を返します。


[11] [CODE(DOMi)@en[Window]] [[インターフェイス]]の
[DFN[[CODE(DOMa)@en[top]]]] [[IDL属性]]の[[取得器]]は、
次のようにしなければ[MUST[なりません]] [SRC[>>10]]。

[FIG(steps)[
= [33] 
[VAR[[[文脈オブジェクト]]]]の[F[閲覧文脈]]が [CODE[null]] の場合、
== [34] 
[CODE[null]] を返します。
= [35] 
それ以外の場合、
== [36] 
[VAR[[[文脈オブジェクト]]]]の[F[閲覧文脈]]の[F[最上位閲覧文脈]]の
[F[[CODE[WindowProxy]]]]
を返します。

]FIG]

[17] この[[IDL属性]]は、[CODE(IDL xattr)[Unforgeable]] です [SRC[>>10]]。

* [CODE(HTML)@en[_top]]

@@

* レンダリング

[27] [[最上位閲覧文脈]]は、[[窓][窓 (Web)]]にて[[レンダリング]]されます。

* 関連

[16] [[最上位閲覧文脈]]は、[[親閲覧文脈]]をたどれるところまでたどった先にあたります。

[21] [[最上位閲覧文脈]]は、[[補助閲覧文脈]]かもしれません。

[22] [[最上位閲覧文脈]]でないものは、[[入れ子閲覧文脈]]です。

[26] ある[[閲覧文脈]]とその[[祖先閲覧文脈]]のすべての[F[最上位閲覧文脈]]は、
同じ[[閲覧文脈]]です。

* 歴史

[24] [CITE@en[Be more precise about nested and discarded browsing contexts]]
([[domenic]]著, [TIME[2016-07-20 22:58:49 +09:00]])
<https://github.com/whatwg/html/commit/39118df640ad4a3f03f164fb5ffe0a56316297be>

[31] [CITE@en[Make Window's parent and top attributes nullable]]
([[yuyokk]]著, [TIME[2016-12-01 06:08:10 +09:00]])
<https://github.com/whatwg/html/commit/9149bbbdeb877f179aef95e4d1cdd418a052886f>

[32] [CITE@en[Editorial: shorten Window's top attribute's algorithm]]
([[annevk]]著, [TIME[2019-02-22 19:47:20 +09:00]])
<https://github.com/whatwg/html/commit/bc58c7792feb62ad82841ad80beb100a0362af91>

[12] [CITE@en[Editorial: shorten Window's top attribute's algorithm by annevk · Pull Request #4378 · whatwg/html]]
([TIME[2019-07-15 20:10:01 +09:00]])
<https://github.com/whatwg/html/pull/4378>