1. 7 ウェブページの読み込み
    1. 7.1 ブラウジングコンテキスト
      1. 7.1.1 ブラウジングコンテキストを作成する
      2. 7.1.2 関連するブラウジングコンテキスト
        1. 7.1.2.1 DOMで関連するブラウジングコンテキストをナビゲートする
      3. 7.1.3 ブラウジングコンテキスト名

7 ウェブページの読み込み

7.1 ブラウジングコンテキスト

ブラウジングコンテキストDocumentオブジェクトがユーザーに提示される環境である。

iframeを含むと同様に、ウェブブラウザーにおいてタブやウィンドウは通常、ブラウジングコンテキストを含む。

ブラウジングコンテキストは、対応するWindowProxyオブジェクトを持つ。

ブラウジングコンテキストは、オープナーブラウジングコンテキストを持ち、これはnullまたはブラウジングコンテキストである最初はnullである。

ブラウジングコンテキストは、不所有の真偽値を持つ。最初はfalseである。

ブラウジングコンテキストは、閉じている真偽値を持つ。最初はfalseである。

次の例は、ブラウジングコンテキストのさまざまな可能性を示している。不所有閉じている、どちらでもない、または両方である可能性がある。

// Neither disowned nor is closing:
const popup1 = window.open();

// Disowned, but not is closing:
const popup2 = window.open();
popup2.opener = null;

// Not disowned, but is closing:
const popup3 = window.open();
popup3.close();

// Disowned, is closing:
const popup4 = window.open();
popup4.opener = null;
popup4.close();

ブラウジングコンテキストは、ブラウジングコンテキストが提示されていた、している、またはするだろうDocumentオブジェクトを一覧表示するセッション履歴を持つ。Documentのブラウジングコンテキストは、そのようなブラウジングコンテキストが存在しかつ破棄されていない場合、セッション履歴にそのDocumentが含まれるブラウジングコンテキストであり、そうでなければnullである。

Documentは、必ずしも非nullのブラウジングコンテキストを持つとは限らない。具体的には、データマイニングツールはブラウジングコンテキストをインスタンス化できないだろう。createDocument()のような API を使用して作成されたDocumentは、非nullのブラウジングコンテキストを持つことはない。文書から削除されて以来、iframe要素で当初は作成されたDocumentは、そのブラウジングコンテキストが破棄されたので、関連付けられたブラウジングコンテキストを持たない。

ブラウジングコンテキストアクティブウィンドウは、その WindowProxyオブジェクトの[[Window]]内部スロット値である。ブラウジングコンテキストアクティブ文書は、そのアクティブウィンドウ関連付けられたDocumentである。

一般に、Documentオブジェクトが非nullブラウジングコンテキストを持っている限り、WindowオブジェクトからDocumentオブジェクトへのマッピングは1対1になる。例外が1つある。Windowは、マッピングが1対2になるように、同じブラウジングコンテキストで2番目のDocumentのプレゼンテーションに再利用できる。This occurs when a browsing context is navigated from the initial about:blank Document to another, with historyHandling set to "replace".

A browsing context has a virtual browsing context group ID integer. It is initially 0. This is used by cross-origin opener policy reporting, to keep track of the browsing context group switches that would have happened if the report-only policy had been enforced.

A browsing context has an initial URL, which is a URL or null. 最初はnullである。

A browsing context has an opener origin at creation, which is an origin or null. 最初はnullである。

7.1.1 ブラウジングコンテキストを作成する

DocumentオブジェクトdocumentブラウジングコンテキストbrowsingContextアクティブ文書を設定するには、次の手順を実行する:

  1. windowdocument関連するグローバルオブジェクトにする。

    この標準に従って、documentウィンドウの前に作成できるが、あまり意味がない。issue #2688を参照。

  2. browsingContextアクティブウィンドウwindowに設定する。

  3. window関連Documentdocumentに設定する。

  4. window関連設定オブジェクト実行準備フラグを設定する。


ブラウジングコンテキストは、関連付けられている作成者の生成元(nullまたは生成元を返す)、作成者のURL(nullまたはURLを返す)、および作成者のベースURL(nullまたはURLを返す)を持つ。これらは最初はnullである。

7.1.2 関連するブラウジングコンテキスト

特定の要素(たとえば、iframe要素)は、ブラウジングコンテキストをさらにインスタンス化できる。この要素は、ブラウジングコンテキストコンテナと呼ばれる。

ブラウジングコンテキストコンテナは、ブラウジングコンテキストまたはnullのいずれとなる、ネストされたブラウジングコンテキストを持つ。最初はnullである。

ブラウジングコンテキストbcコンテナーは、ネストされたブラウジングコンテキストbcであるブラウジングコンテキストコンテナーであり、そのような要素がない場合はnullである。

ブラウジングコンテキストbcは、コンテナー文書を持ち、これは次の手順を実行した結果である:

  1. bcコンテナーがnullである場合、nullを返す。

  2. bcコンテナーノード文書を返す。

    bcコンテナー接続する必要があるため、これはbcコンテナーシャドウを含むルートと同じである。

childコンテナー文書がnullでなく、かつchildコンテナー文書ブラウジングコンテキストparentである場合、ブラウジングコンテキストchildは、別のブラウジングコンテキストparent子ブラウジングコンテキストと呼ばれる。

ブラウジングコンテキストchildは、child子ブラウジングコンテキストであり、かつchildコンテナー文書ツリー内である場合、parent文書ツリーの子ブラウジングコンテキストである。

ブラウジングコンテキストchild親ブラウジングコンテキストを持ってもよい。もしそのようなブラウジングコンテキストが存在すれば、これは子ブラウジングコンテキストとしてchildを持つ一意なブラウジングコンテキストである。そうでなければ、ブラウジングコンテキストは、親ブラウジングコンテキストを持たない。

ブラウジングコンテキストAA子ブラウジングコンテキストであり、かつB祖先自身であるブラウジングコンテキストA'が存在する場合、またはブラウジングコンテキストAB親ブラウジングコンテキストである場合、ブラウジングコンテキストB祖先であると言われる。

親ブラウジングコンテキストを持たないブラウジングコンテキストは、それ自身のトップレベルブラウジングコンテキストであり、祖先ブラウジングコンテキストであるブラウジングコンテキストのすべてとなる。

トップレベルブラウジングコンテキストは、関連するグループ(nullまたはブラウジングコンテキストグループ)を持つ。最初はnullである。

コンテナーがnullの間に、トップレベルブラウジングコンテキストに関連する新しいブラウジングコンテキストを作成することができる。そのようなブラウジングコンテキストは、補助ブラウジングコンテキストと呼ばれる。補助ブラウジングコンテキストは常にトップレベルブラウジングコンテキストである。

子ブラウジングコンテキストであるブラウジングコンテキストに対する親ブラウジングコンテキストの推移的クロージャは、祖先ブラウジングコンテキストのリストを与える。

Document d子孫ブラウジングコンテキストのリストは、以下のアルゴリズムによって返される(順序付きの)リストである:

  1. listを空のリストにする。

  2. ネストされたブラウジングコンテキストがnullでなく、シャドウを含むルートdである各ブラウジングコンテキストコンテナーcontainerごとに、シャドウを含むツリーの順序で:

    1. nestedBCコンテナーネストされたブラウジングコンテキストにする。

    2. nestedBClist追加する

    3. nestedBCアクティブ文書子孫ブラウジングコンテキストのリストlist拡張する

  3. listを返す。

A Document d is said to be fully active when d's browsing context is non-null, d's browsing context's active document is d, and either d's browsing context is a top-level browsing context, or d's browsing context's container document is fully active.

子ブラウジングコンテキストは要素に関連付けられているため、常にその親ブラウジングコンテキスト内の特定のDocumentに関連付けられている。 ユーザーエージェントは、ユーザーにがいない自身が完全にアクティブでないDocumentにある要素の子ブラウジングコンテキストと対話することを許可してはならない。

次の例は、アクティブなDocumentオブジェクトと完全にアクティブなDocumentオブジェクトの違いを示している。 ここで、a.htmlはブラウザーのウィンドウに読み込まれ、b-1.htmlは示されているように最初にiframeに読み込まれ、b-2.htmlおよびc.htmlは省略される(単に空の文書にすることができる)。

<!-- a.html -->
<!DOCTYPE html>
<html lang="en">
<title>Browsing context A</title>

<iframe src="b-1.html"></iframe>
<button onclick="frames[0].location.href = 'b-2.html'">Click me</button>

<!-- b-1.html -->
<!DOCTYPE html>
<html lang="en">
<title>Browsing context B</title>

<iframe src="c.html"></iframe>

この時点で、a.htmlb-1.html、およびc.htmlによって提供される文書はすべて、それぞれのブラウジングコンテキストアクティブな文書である。それらはまた、すべて完全にアクティブである。

buttonをクリックし、b-2.htmlからブラウジングコンテキストBに新しいDocumentをロードする後に、次の結果が得られる:

ここに含まれる複雑さ、特にセッション履歴に影響を与える詳細については、A Model of Navigation Historyを参照のこと。[NAVMODEL]

子ブラウジングコンテキストは、遅延loadイベントモードにすることができる。新しいDocumentが作成される前に、コンテナーロードイベントを遅延させるために、ナビゲート時に使用される。

ブラウジングコンテキスト文書ファミリーは、そのブラウジングコンテキストセッション履歴ですべてのDocumentオブジェクト、およびすべてのそれらDocumentオブジェクトの文書ファミリーの和集合で構成される。Documentオブジェクトの文書ファミリーは、Documentオブジェクトの子孫のブラウジングコンテキストのリストにあるブラウジングコンテキストのすべての文書ファミリーの和集合で構成されている。

ブラウジングコンテキストコンテナー containerコンテンツ文書は、次のアルゴリズムの結果である:

  1. containerネストされたブラウジングコンテキストがnullである場合、nullを返す。

  2. contextcontainerネストされたブラウジングコンテキストにする。

  3. documentcontextアクティブ文書にする。

  4. document生成元およびcontainerノード文書生成元同一生成元ドメインでない場合、nullを返す。

  5. documentを返す。

window . top

Window/top

Support in all current engines.

Firefox1+Safari3+Chrome1+
Opera12.1+Edge79+
Edge (Legacy)12+Internet Explorer4+
Firefox Android4+Safari iOS1+Chrome Android18+WebView Android1+Samsung Internet1.0+Opera Android12.1+

トップレベルブラウジングコンテキストWindowProxyを返す。

window . opener [ = value ]

Window/opener

Support in all current engines.

Firefox1+Safari1+Chrome1+
Opera3+Edge79+
Edge (Legacy)12+Internet Explorer9+
Firefox Android4+Safari iOS1+Chrome Android18+WebView Android1+Samsung Internet1.0+Opera Android10.1+

オープナーブラウジングコンテキストに対するWindowProxyを返す。

存在しないまたはnullが設定されている場合、nullを返す。

nullに設定可能である。

window . parent

Window/parent

Support in all current engines.

Firefox1+Safari1.3+Chrome1+
Opera3+Edge79+
Edge (Legacy)12+Internet Explorer9+
Firefox Android4+Safari iOS1+Chrome Android18+WebView Android1+Samsung Internet1.0+Opera Android10.1+

親ブラウジングコンテキストに対するWindowProxyを返す。

window . frameElement

Window/frameElement

Support in all current engines.

Firefox1+Safari3+Chrome1+
Opera12.1+Edge79+
Edge (Legacy)12+Internet Explorer5.5+
Firefox Android4+Safari iOS1+Chrome Android18+WebView Android1+Samsung Internet1.0+Opera Android12.1+

ブラウジングコンテキストコンテナElementを返す。

存在しない場合、生成元をまたいだ状況でnullを返す。

7.1.3 ブラウジングコンテキスト名

ブラウジングコンテキストは、ブラウジングコンテキスト名を持つことができる。特に明記しない限り、それは空文字列である。

妥当なブラウジングコンテキスト名は、U+005F LOW LINE文字で始まらない少なくとも1文字をもつ任意の文字列である。(アンダースコアで始まる名前は、特別なキーワードのために予約されている。)

妥当なブラウジングコンテキスト名またはキーワードは、妥当なブラウジングコンテキスト名またはASCII大文字・小文字不区別_blank_self_parent、または_topの1つに一致するいずれかとなる任意の文字列である。

これらの値は、以下の(非規範的な)テーブルで要約されるように、ページがサンドボックス化されるかどうかに基づいて異なる意味を持つ。この表において、"current"はリンクまたはスクリプト内にあるブラウジングコンテキストを意味し、"parent"はリンクまたはスクリプト内にあるいずれかの親ブラウジングコンテキストを意味し、"top"はリンクまたはスクリプトがあるいずれかのトップレベルブラウジングコンテキストを意味し、"new"はさまざまなユーザー設定とユーザーエージェントのポリシーに次第で、新しいトップレベルブラウジングコンテキストまたは補助ブラウジングコンテキストが作成されることを意味し、"none"は何も起こらないことを意味し、"maybe new"は"allow-popups"キーワードはまたsandbox属性で指定される場合(またはユーザーがサンドボックスを覆う場合)、"new"と同じであり、そうでなければ"none"と同じである。

キーワード普通の効果iframeでの効果
sandbox=""sandbox="allow-top-navigation"
リンクおよびフォーム送信に対して、何も指定しないcurrentcurrentcurrent
空文字列currentcurrentcurrent
_blanknewmaybe newmaybe new
_selfcurrentcurrentcurrent
親が存在しない場合の_parentcurrentcurrentcurrent
親がまたトップである場合の_parentparent/topnoneparent/top
存在するがトップでない場合の_parentparentnonenone
トップが現在である場合の_topcurrentcurrentcurrent
トップが現在でない場合の_toptopnonetop
名前が存在しないnewmaybe newmaybe new
名前が存在しかつ子孫であるspecified descendantspecified descendantspecified descendant
名前が存在し現在であるcurrentcurrentcurrent
名前が存在しかつトップとなる祖先であるspecified ancestornonespecified ancestor/top
名前が存在しかつトップでない祖先であるspecified ancestornonenone
他の名前が共通のトップとともに存在するspecifiednonenone
familiarかつある許可されたサンドボックス化されたナビゲーターである場合、異なるトップをもつ名前が存在するspecifiedspecifiedspecified
familiarだがある許可されたサンドボックス化されたナビゲーターでない場合、異なるトップをもつ名前が存在するspecifiednonenone
familiarでない、異なるトップをもつ名前が存在するnewmaybe newmaybe new

サンドボックス化されたブラウジングコンテキストの制限のほとんどは、他のアルゴリズムにより適用される。たとえば、下記で与えられるブラウジングコンテキスト名で与えられたをブラウジングコンテキストを選択するための規則でなく、ナビゲーションアルゴリズムとして。