閲覧文脈

閲覧文脈 (Web)

[30] 閲覧文脈 (えつらんぶんみゃく) (browsing context) は、 Webブラウザーにおけるタブフレームに相当する内部オブジェクトです。

[31] JavaScript からは Window オブジェクトのように見えますが、 厳密には異なります。

仕様書

意味

[1] 閲覧文脈 (えつらんぶんみゃく) (browsing context) は、そこに於いて Document オブジェクト利用者提示される (presented) 環境 (environment) です WA1 >>3

[7] 閲覧文脈とは要はWebブラウザータブであったり iframe 要素であったりと、(文書の側からすると) window オブジェクトによって表されるものなのですが、 実際にはこの周辺の仕組みは極めて複雑なためにまどろっこしい定義になっています。

[4] Webブラウザータブは通常閲覧文脈を1つ含んでいます。

[5] iframe 要素frame 要素閲覧文脈を作ります。

[6] object 要素はその表す (represent) 内容によっては閲覧文脈を作ります。

状態

[20] 閲覧文脈は、次の状態を持ちます。

入れ子閲覧文脈
入れ子閲覧文脈最上位閲覧文脈か。 作成時に決まり、変化することはありません。
補助閲覧文脈
補助閲覧文脈かどうか。作成時に決まり、変化することはありません。
二次的閲覧文脈
二次的閲覧文脈かどうか。作成時に決まり、変化することはありません。
WindowProxy
>>10
Window
大域オブジェクトです。
セッション履歴
閲覧文脈で表示した文書と付随する状態のリスト。
作成子閲覧文脈
作成の責を負った閲覧文脈 >>3
作成子URL
作成元の文書の番地
作成子起源
作成元の文書の起源
作成子基底URL
作成元の文書基底URL
作成子参照元ポリシー
作成元の文書参照元ポリシー
作成子文脈セキュリティー
閲覧文脈包含子
親閲覧文脈
最上位閲覧文脈
親閲覧文脈をそれ以上辿れない閲覧文脈です。
opener閲覧文脈の逆関係の閲覧文脈
直接到達可能閲覧文脈かどうかの判定のためにopener閲覧文脈の逆方向の閲覧文脈かどうか決定できる必要があります。
script-closable
window.close が機能する条件です。
閲覧文脈名
捨てられた
閲覧文脈を捨てる処理が行われたかどうか。
活性文書
現在エントリー文書です。
関連する類似起源閲覧文脈の単位
所属する関連する類似起源閲覧文脈の単位です。 活性文書が変化すると、変化するかもしれません。
イベントループ
関連する類似起源閲覧文脈の単位イベントループです。
画布
閲覧領域
非保安要求ポリシー
http:https:URL 書き換えを行うか否か。
非保安navigate格上げ集合
navigate 時に http:https:URL 書き換えを行うか否か。
one permitted sandboxed navigator
レンダリング機会
作成子Document
作成時点での作成子閲覧文脈活性文書 (あれば) >>3

[29] 最上位閲覧文脈は、加えて次の状態を持ちます。

最上位閲覧文脈が表示されているです。
popup sandboxing flag set
セッション履歴探索キュー
セッション履歴上の移動の処理を扱うタスクキューです。
セッション履歴イベントループ
セッション履歴探索キューを処理するものとして並列に実行されるものです。
結合セッション履歴
セッション履歴入れ子閲覧文脈セッション履歴を結合したものです。
セッションストレージ領域
セッションストレージ領域は、 sessionStorage で使われます。 起源ごとに存在します。

[25] 入れ子閲覧文脈は、加えて次の状態を持ちます。

閲覧文脈包含子
入れ子閲覧文脈を作成した要素に関連付けられます。
delaying load events mode
delay the load event の適用対象になっているかどうかのフラグ。
iframe sandboxing flag set
iframe 要素属性から得られた sandboxing flag set

[27] 補助閲覧文脈は、加えて次の状態を持ちます。

opener閲覧文脈
閲覧文脈を開いた元の閲覧文脈
スクリプトにより作成されかどうか
script-closable かどうかの決定で参照されます。

閲覧文脈同士の関係

[16] 閲覧文脈群には次のようなグループ化の単位があります。

[26] 閲覧文脈を介した文書との関係

[28] 閲覧文脈は使われ方により次のように分類されます (次のリストの各項目は、 互いに排他的とは限りません)。

文書との関係

[21] Document閲覧文脈 (Document's browsing context) は、 セッション履歴に当該 Document を含むような閲覧文脈であって、 その捨てられたであるもの (あれば) です >>22document.defaultView に相当します。

[37] 文書閲覧文脈があることを、「閲覧文脈中にある (in) 」 などといいます。 navigate で作られた文書など閲覧文脈中にある文書もあれば、 XHR で作られた文書など閲覧文脈を持たない文書もあります。

[38] 閲覧文脈に現在表示中の文書のことを活性文書といいます。 window.document に相当します。

[23] セッション履歴セッション履歴エントリーも参照。

窓との関係

[10] 閲覧文脈には、それに対応する WindowProxy オブジェクトが1つあります。 >>3 閲覧文脈は、 WindowProxy への強い参照を持ちます >>40

[11] それに対して閲覧文脈で提示される Document オブジェクトには、それぞれ対応する Window オブジェクトが1つずつあります。>>3

[12] WindowProxy はその名の通り「 (proxy) 」であり、 すべてをその閲覧文脈活性文書Window オブジェクトに転送します。 >>3

[35] 仕様上 WindowProxy閲覧文脈は別のオブジェクトとして規定されていますが、 閲覧文脈は仕様書上にのみ登場する内部オブジェクトで、JavaScript からはアクセスできませんから、どう実装されるかは Webブラウザーによります。両者は常に一対一対応していますから、 実質的に同じオブジェクトとみなすこともできます。

作成

[8] 閲覧文脈の作成を参照。

破棄

[39] 閲覧文脈を破棄する処理はいくつかあります。

レンダリング

[9] レンダリングの更新を参照。

歴史

[33] Netscape 2 により JavaScriptフレームが導入されました。 現在の閲覧文脈に相当するものはこの時に登場したことになります。

[34] 閲覧文脈という用語が登場しその性質と挙動が初めて明確に規定されたのは、 その10年後の Web Applications 1.0 (現 HTML Standard) でした。

[13] [whatwg] Should events be paused on detached iframes? ( ( 版)) <http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2010-December/029346.html>

[14] Window Object 1.0 ( ( 版)) <http://www.w3.org/TR/Window/#dfn-browsing-context>

[17] Web Applications 1.0 r8776 Try to fix the logic around opening new tabs because the user said so, even in sandboxed environments ( ( 版)) <https://html5.org/r/8776>

[18] MIX: Drop "JavaScript Global Environment". · 5d32821 · w3c/webappsec ( ( 版)) <https://github.com/w3c/webappsec/commit/5d32821b21f3cb06a651c966f729b3044292a08a>

[19] Web Applications 1.0 r8882 Add hyperlinks for creating browsing contexts. ( ( 版)) <https://html5.org/r/8882>

[24] Clarify the definition of window.frameElement · whatwg/html@a398377 ( 版) <https://github.com/whatwg/html/commit/a398377bbc8483e27c4fc478a097ef72f3057593>

[36] Use new "document's browsing context" concept everywhere · whatwg/html@6fe2ac7 ( 版) <https://github.com/whatwg/html/commit/6fe2ac75f7ab63b98fe1637129f0a8574a542e55>

[41] Remove the concept of creator Document so we don't leak a document · whatwg/html@a996f3b ( 版) <https://github.com/whatwg/html/commit/a996f3b4982f20697f71a23c919567a638519959>

[42] Be more precise about nested and discarded browsing contexts (domenic著, ) <https://github.com/whatwg/html/commit/39118df640ad4a3f03f164fb5ffe0a56316297be>

[43] Set the top-level browser context to use for a session. (#929) (shs96c著, ) <https://github.com/w3c/webdriver/commit/70a3387eaa8021027c5ae543ae9d2c3df167a913>

[44] 540988 - ☂ Speed up discarded tab restoration - chromium - Monorail () <https://bugs.chromium.org/p/chromium/issues/detail?id=540988>