閲覧文脈 — Browsing contexts


7. web ページの読み込み

この節は、~web~browserに最も直に適用される特能を述べる。 とは言え,~web~browserかどうかにかかわらず、この節に定義される要件は,すべての~UAに適用される — 他が指定されない限り。 ◎ This section describes features that apply most directly to web browsers. Having said that, except where specified otherwise, the requirements defined in this section do apply to all user agents, whether they are web browsers or not.

【この訳に固有の表記規約】

この訳の,~algoや定義の記述に利用されている各種記号( ~LET, ~IF, ε, コレ, ~THROW 等々)の意味や定義の詳細は,~SYMBOL_DEF_REFを~~参照されたし。

7.1. 閲覧文脈

`閲覧文脈@ とは、利用者~向けに`文書$を呈示する環境である。 ◎ A browsing context is an environment in which Document objects are presented to the user.

注記: ~web~browser内の[ ~tab/~window ]は、概して`閲覧文脈$を包含する — [ `iframe$e や `frameset$e 内の `frame$e ]と同じく。 ◎ A tab or window in a web browser typically contains a browsing context, as does an iframe or frames in a frameset.

各 `閲覧文脈$ %B には、次に挙げるものが結付けられる: ◎ ↓

  • %B に対応する `WindowProxy$I ~obj。 ◎ A browsing context has a corresponding WindowProxy object.
  • %B を `開いた閲覧文脈@ は、[ ~NULL または`閲覧文脈$ ]であり,初期~時は ~NULL とする。 ◎ A browsing context has an opener browsing context, which is null or a browsing context. It is initially null.
  • %B の `未所有化~flag@ は、真偽値であり,初期~時は ~F とする。 ◎ A browsing context has a disowned boolean. It is initially false.
  • %B の `閉中~flag@ は、真偽値であり,初期~時は ~F とする。 ◎ A browsing context has an is closing boolean. It is initially false.

`閲覧文脈$の[ `未所有化~flag$, `閉中~flag$ ]は、次の例に示すように,どの組み合わせもとり得る: ◎ The following example illustrates the various possibilities of a browsing context. It can be disowned, is closing, neither, or both.

/* 
未所有化~flag ~EQ ~F,
閉中~flag ~EQ ~F
◎
Neither disowned nor is closing:
 */
const %popup1 = window.open();

/* 
未所有化~flag ~EQ ~T,
閉中~flag ~EQ ~F
◎
Disowned, but not is closing:
 */
const %popup2 = window.open();
%popup2.opener = null;

/* 
未所有化~flag ~EQ ~F,
閉中~flag ~EQ ~T
◎
Not disowned, but is closing:
 */
const %popup3 = window.open();
%popup3.close();

/* 
未所有化~flag ~EQ ~T,
閉中~flag ~EQ ~T
◎
Disowned, is closing:
 */
const %popup4 = window.open();
%popup4.opener = null;
%popup4.close();

`閲覧文脈$ %B の`~session履歴$は、 %B が呈示-[ した/している/することになる ]`文書$たちからなる。 ◎ A browsing context has a session history, which lists the Document objects that the browsing context has presented, is presenting, or will present.\

`文書$ %文書 が `属する閲覧文脈@ は、次を満たす`閲覧文脈$ %B は[ 在るならば それ / 無いならば ~NULL ]である ⇒ [ %B は`破棄され$ていない ]~AND[ %文書 は %B の`~session履歴$内にある† ] ◎ A Document's browsing context is the browsing context whose session history contains the Document, if any such browsing context exists and has not been discarded, and null otherwise.

【† より厳密には、 ある`~session履歴~entry$の`文書$shE ~EQ %文書 】【 同じ文書が複数の~session履歴~内にあることはないので、 %B は一意に定まる。 】

注記: `文書$が`属する閲覧文脈$は ~NULL になることもある。 特に,~data集析~toolは、閲覧文脈を~instance化することは,まずないであろう。 `createDocument()$m などの ~APIを利用して作成された`文書$が`属する閲覧文脈$は、必ず ~NULL になる。 また, `iframe$e 要素~用に作成された`文書$が`属する閲覧文脈$は、後で要素が`文書から除去され$たときには,`破棄され$て ~NULL にされる。 ◎ A Document does not necessarily have a non-null browsing context. In particular, data mining tools are likely to never instantiate browsing contexts. A Document created using an API such as createDocument() never has a non-null browsing context. And the Document originally created for an iframe element, which has since been removed from the document, has no associated browsing context, since that browsing context was discarded.

`閲覧文脈$ %B にて `作動中の~window@ は、 %B の `WindowProxy$I ~objの `Window$sl 内部~slotの値である 【この~slotに保持される】。 %B にて `作動中の文書@ は、 %B にて`作動中の~window$に`結付けられている文書$を指す。 ◎ A browsing context's active window is its WindowProxy object's [[Window]] internal slot value. A browsing context's active document is its active window's associated Document.

注記: 一般に,`~window$と[ `文書$のうち,`属する閲覧文脈$は ~NULL でないもの ]は一対一に対応するが、1 つだけ例外がある: `~window$は,同じ`閲覧文脈$内で 2 番目の`文書$を呈示するために再利用されることもあり、その場合,対応関係は一対二になる†。 これは、[ `履歴~取扱い$V を `置換-$i に設定する下で,`閲覧文脈$を初期 `~about_blank$sc `文書$から別の文書へ`~navigate$するとき ]に生じる。 【†この一対二は,異なる時点も含めてのことであり、任意のある時点では,一意に対応する。】 ◎ In general, there is a 1-to-1 mapping from the Window object to the Document object, as long as the Document object has a non-null browsing context. There is one exception. A Window can be reused for the presentation of a second Document in the same browsing context, such that the mapping is then 1-to-2. This occurs when a browsing context is navigated from the initial about:blank Document to another, with historyHandling set to "replace".

7.1.1. 閲覧文脈の作成-法

`閲覧文脈にて作動中の文書を設定する@ ときは、所与の ( `閲覧文脈$ %B, `文書$ %文書 ) に対し,次を走らす: ◎ To set the active document of a browsing context browsingContext to a Document object document, run these steps:

  1. %~window ~LET %文書 に`関連な大域~obj$ ◎ Let window be document's relevant global object.

    この標準によれば、 %文書 は, %~window より前に作成され得る — それはイミを成すとは言い難い。 課題 #2688 を見よ。 ◎ Per this standard document can be created before window, which does not make much sense. See issue #2688.

  2. %B にて`作動中の~window$ ~SET %~window ◎ Set browsingContext's active window to window.
  3. %~window に`結付けられている文書$ ~SET %文書 ◎ Set window's associated Document to document.
  4. %~window に`関連な設定群~obj$の`実行~準備済み~flag$enV ~SET ~T ◎ Set window's relevant settings object's execution ready flag.

各 `閲覧文脈$には,次に挙げるものが結付けられ、どれも[ 初期~時は ~NULL を返す ]ようにされているとする:

  • `作成元の生成元@ ⇒ ~NULL または`生成元$を返す
  • `作成元の~URL@ ⇒ ~NULL または`~URL~record$を返す
  • `作成元の基底~URL@ ⇒ ~NULL または`~URL~record$を返す
◎ A browsing context has an associated creator origin (null or returns an origin), creator URL (null or returns a URL), and creator base URL (null or returns a URL). These are all initially null.

`生成元を決定する@ ときは、所与の ( `閲覧文脈$ %B, `~URL~record$ %~url, `~sandbox法~flag集合$ %~sandbox~flags, `生成元$ %呼出n生成元, `生成元$ %作動中の文書~navi生成元 ) に対し: ◎ To determine the origin, given browsing context browsingContext, URL url, sandboxing flag set sandboxFlags, and two origins invocationOrigin and activeDocumentNavigationOrigin:

  1. ~IF[ `閲覧文脈~sandbox化( 生成元 )~flag$ ~IN %~sandbox~flags ] ⇒ ~RET 新たな`不透明な生成元$ ◎ If sandboxFlags has its sandboxed origin browsing context flag set, then return a new opaque origin.
  2. ~IF[ %~url ~EQ ~NULL ] ⇒ ~RET 新たな`不透明な生成元$ ◎ If url is null, then return a new opaque origin.
  3. ~IF[ %作動中の文書~navi生成元 ~NEQ ~NULL ]~AND[ %~url の`~scheme$url ~EQ `javascript^l ] ⇒ ~RET %作動中の文書~navi生成元 ◎ If activeDocumentNavigationOrigin is not null, and url's scheme is "javascript", then return activeDocumentNavigationOrigin.
  4. ~IF[ %呼出n生成元 ~NEQ ~NULL ]~AND[ %~url は【!*】 `~about_blank$sc ] ⇒ ~RET %呼出n生成元 ◎ If invocationOrigin is non-null and url is about:blank, then return invocationOrigin.

    注記: ここでの結果は、 2 つの文書の下層の`生成元$は同じになり, `document.domain$m は両者に影響することを意味する。 【課題 #4126】 ◎ The result here is that two documents end up with the same underlying origin, meaning that document.domain affects both.

  5. ~IF[ %~url は【!*】 `~about_srcdoc$sc ] ⇒ ~RET %B の`容器~文書$の`生成元$ ◎ If url is about:srcdoc, then return the origin of browsingContext's container document.
  6. ~RET %~url の`生成元$url ◎ Return url's origin.

`新たな閲覧文脈を作成する@ ときは、所与の ( ~NULL または`文書$ %作成元, ~NULL または要素 %埋込元, `閲覧文脈~group$ %~group ) に対し,次を走らす: ◎ To create a new browsing context, given null or a Document object creator, null or an element embedder, and a browsing context group group, run these steps:

  1. %B ~LET 新たな`閲覧文脈$ ◎ Let browsingContext be a new browsing context.
  2. ~IF[ %作成元 ~NEQ ~NULL ] ⇒# %B の`作成元の生成元$は %作成元 の`生成元$を返すようにする, %B の`作成元の~URL$は %作成元 の`~URL$docを返すようにする, %B の`作成元の基底~URL$は %作成元 の`文書~基底~URL$を返すようにする ◎ If creator is non-null, then set browsingContext's creator origin to return creator's origin, browsingContext's creator URL to return creator's URL, and browsingContext's creator base URL to return creator's base URL.
  3. %~sandbox~flags ~LET `作成時の~sandbox法~flagsを決定する$( %B, %埋込元 ) ◎ Let sandboxFlags be the result of determining the creation sandboxing flags given browsingContext and embedder.
  4. %生成元 ~LET `生成元を決定する$( 次に挙げる引数 ) ⇒# %B, `~about_blank$sc, %~sandbox~flags, %B の`作成元の生成元$, ~NULL ◎ Let origin be the result of determining the origin given browsingContext, about:blank, sandboxFlags, browsingContext's creator origin, and null.
  5. %許可~施策 ~LET `閲覧文脈~用の許可~施策を作成する$( %B, %生成元 ) `PERMISSIONSPOLICY$r ◎ Let permissionsPolicy be the result of creating a permissions policy given browsingContext and origin. [PERMISSIONSPOLICY]

    これは %埋込元 を必要とする。 ◎ This needs to use embedder.

  6. %~agent ~LET `生成元が類似な~window~agentを得する$( %生成元, %~group, ~F ) ◎ Let agent be the result of obtaining a similar-origin window agent given origin, group, and false.
  7. %~realm実行~文脈 ~LET 次のように~custom化する下で, %~agent 内で`新たな~JS~realmを作成する$ ⇒# 大域~obj用に 新たな `Window$I ~objを作成する, 大域 `this^jv 束縛には %B の `WindowProxy$I ~objを利用する ◎ Let realm execution context be the result of creating a new JavaScript realm given agent and the following customizations: • For the global object, create a new Window object. • For the global this binding, use browsingContext's WindowProxy object.
  8. %~top-level作成時の~URL ~LET %埋込元 に応じて ⇒# ~NULL ならば `~about_blank$sc / ~ELSE_ %埋込元 に`関連な設定群~obj$の`~top-level作成時の~URL$enV ◎ Let topLevelCreationURL be about:blank if embedder is null; otherwise embedder's relevant settings object's top-level creation URL.
  9. %~top-level生成元 ~LET %埋込元 に応じて ⇒# ~NULL ならば %生成元 / ~ELSE_ %埋込元 に`関連な設定群~obj$の`~top-level生成元$enV ◎ Let topLevelOrigin be origin if embedder is null; otherwise embedder's relevant settings object's top-level origin.
  10. 【!不要:Let settingsObject be the result of 】 `~window用に環境~設定群~objを設定しておく$( 次に挙げる引数 ) ⇒# %~realm実行~文脈, ~NULL, %~top-level作成時の~URL, %~top-level生成元 ◎ Let settingsObject be the result of setting up a window environment settings object with realm execution context, null, topLevelCreationURL, and topLevelOrigin.
  11. %coop ~LET `unsafe-none$coop ◎ Let coop be "unsafe-none".
  12. ~IF[ %作成元 ~NEQ ~NULL ]~AND[ ( %作成元 の`生成元$, %作成元 に`関連な設定群~obj$の`~top-level生成元$enV ) は`同一-生成元$である ] ⇒ %coop ~SET %作成元 が`属する閲覧文脈$の`~top-level閲覧文脈$にて`作動中の文書$の`非同一-生成元~opener施策$doc ◎ If creator is non-null and creator's origin is same origin with creator's relevant settings object's top-level origin, then set coop to creator's browsing context's top-level browsing context's active document's cross-origin opener policy.
  13. %文書 ~LET 次のようにされた新たな`文書$: ◎ Let document be a new Document,\

    • `過去互換~mode$docにおいては ⇒ %文書 の`種別$doc ~SET `html^l ◎ marked as an HTML document in quirks mode,\
    • `内容~型$doc ~SET `text/html^l ◎ whose content type is "text/html",\
    • `生成元$ ~SET %生成元 ◎ origin is origin,\
    • `許可~施策$doc ~SET %許可~施策 ◎ permissions policy is permissionsPolicy,\
    • `作動中の~sandbox法~flag集合$ ~SET %~sandbox~flags ◎ active sandboxing flag set is sandboxFlags,\
    • `非同一-生成元~opener施策$doc ~SET %coop ◎ cross-origin opener policy is coop, and\
    • 即時に,`読込後~taskは準備済み$になる ◎ which is ready for post-load tasks.
  14. %文書 が次を満たすことを確保する ⇒ [ %文書 の子~nodeたちは 1 個の `html$e 要素 %html からなる ]~AND[ %html の子~nodeたちは 空な[ `head$e 要素, `body$e 要素 ]からなる ] ◎ Ensure that document has a single child html node, which itself has two empty child nodes: a head element, and a body element.
  15. `閲覧文脈にて作動中の文書を設定する$( %B, %文書 ) ◎ Set the active document of browsingContext to document.
  16. ~IF[ %B の`作成元の~URL$ ~NEQ ~NULL ] ⇒ %文書 の`~referrer$doc ~SET `~URLを直列化する$( %B の`作成元の~URL$ ) ◎ If browsingContext's creator URL is non-null, then set document's referrer to the serialization of it.
  17. ~IF[ %作成元 ~NEQ ~NULL ] ⇒# %文書 の`~referrer施策$doc ~SET %作成元 の`~referrer施策$doc; %文書 の`埋込元~施策$doc ~SET %作成元 の`埋込元~施策$doc ◎ If creator is non-null, then set document's referrer policy to creator's referrer policy. ◎ If creator is non-null, then set document's embedder policy to creator's embedder policy.
  18. %B の`~session履歴$に %文書 を追加する 【これは、もっときちんと定義される必要があろう。】 ◎ Add document to browsingContext's session history.
  19. %文書 の`読込ngを完全に終わらす$ ◎ Completely finish loading document.
  20. ~RET %B ◎ Return browsingContext.

`新たな~top-level閲覧文脈を作成する@ ときは: ◎ To create a new top-level browsing context:

  1. %~group ~LET `新たな閲覧文脈~groupを作成する$ ◎ Let group be the result of creating a new browsing context group.
  2. ~RET %~group の`閲覧文脈~集合$[0] ◎ Return group's browsing context set[0].

注記: これは`~top-level閲覧文脈$を作成する。 ◎ This creates a top-level browsing context.

`新たな補助~閲覧文脈を作成する@ ときは、所与の ( `閲覧文脈$ %~opener ) に対し: ◎ To create a new auxiliary browsing context, given a browsing context opener:

  1. %~group ~LET %~opener の`~top-level閲覧文脈$の`~group$tbcG ◎ Let group be opener's top-level browsing context's group
  2. ~Assert: %~group ~NEQ ~NULL — これは、`~navigate$するとき直に呼出されるので。 ◎ Assert: group is non-null, as navigating invokes this directly.
  3. %B ~LET `新たな閲覧文脈を作成する$( %~opener にて`作動中の文書$, ~NULL, %~group ) ◎ Let browsingContext be the result of creating a new browsing context with opener's active document, null, and group.
  4. `閲覧文脈~groupに付加する$( %~group, %B ) ◎ Append browsingContext to group.
  5. %B を`開いた閲覧文脈$ ~SET %~opener ◎ Set browsingContext's opener browsing context to opener.
  6. `閲覧~session~storage倉を旧来~cloneする$( %~opener の`閲覧~session$tlbc, %B の`閲覧~session$tlbc ) `STORAGE$r ◎ Legacy-clone a browsing session storage shed with opener's browsing session and browsingContext's browsing session. [STORAGE]
  7. ~RET %B ◎ Return browsingContext.

注記: これは、[ `補助~閲覧文脈$でもある,`~top-level閲覧文脈$ ]を作成する。 ◎ This creates a top-level browsing context that is also an auxiliary browsing context.

`新たな入子の閲覧文脈を作成する@ ときは、所与の ( 要素 %要素 ) に対し: ◎ To create a new nested browsing context, given an element element:

  1. %文書 ~LET %要素 の`~node文書$ ◎ ↓
  2. %~group ~LET %文書 が`属する閲覧文脈$の`~top-level閲覧文脈$の`~group$tbcG ◎ Let group be element's node document's browsing context's top-level browsing context's group.
  3. %B ~LET `新たな閲覧文脈を作成する$( %文書, %要素, %~group ) ◎ Let browsingContext be the result of creating a new browsing context with element's node document, element, and group.
  4. %要素 が`入子にしている閲覧文脈$ ~SET %B ◎ Set element's nested browsing context to browsingContext.
  5. ~IF[ %要素 は `name^a 属性を有する ] ⇒ %B の`名前$ ~SET その属性の値 ◎ If element has a name attribute, then set browsingContext's name to the value of this attribute.
  6. ~RET %B 【この段は原文には無いが、他所を簡潔に記述するため,追加している。】

7.1.2. 関係する閲覧文脈たち

ある種の要素(例えば `iframe$e 要素)は、更に`閲覧文脈$を~instance化し得る。 そのような要素 %要素 は `閲覧文脈~容器@ と呼ばれる。 ◎ Certain elements (for example, iframe elements) can instantiate further browsing contexts. These elements are called browsing context containers.

【 `iframe^e 以外に該当する要素には、 `embed$e, `object$e,および廃用にされた `frame$e がある。 】

`閲覧文脈~容器$が `入子にしている閲覧文脈@ は、`閲覧文脈$または ~NULL であり,初期~時には ~NULL とする。 ◎ Each browsing context container has a nested browsing context, which is either a browsing context or null. It is initially null.

【 閲覧文脈~容器が文書から除去されたときなど、 入子の閲覧文脈が破棄されるときも, ~NULL にされる。 】【 この用語は、 “入子の閲覧文脈である” という句で参照されることもある。 それは、[ 当の閲覧文脈の`容器$bc ~NEQ ~NULL ]を含意する — が,実際には、より強い条件[ `親~閲覧文脈$ ~NEQ ~NULL ]が意図されているかもしれない(特に,他の仕様から参照されている場合)。 】

`閲覧文脈$ %B の `容器@bc は、次を満たす`閲覧文脈~容器$ %容器 が[ 在るならばそれ / 無いならば ~NULL ]とする ⇒ %容器 が`入子にしている閲覧文脈$ ~EQ %B ◎ The container of a browsing context bc is the browsing context container whose nested browsing context is bc, or null if there is no such element.

【 %容器 は一意に定まる — 複数の`閲覧文脈~容器$が同じ`閲覧文脈$を入子にすることはないので。 また,所与の`閲覧文脈$に対し、その`容器$bc( ~NEQ ~NULL )が他の`閲覧文脈~容器$に変化することもない。 】

`閲覧文脈$ %B の `容器~文書@ は、[ %B の`容器$bc ~NEQ ~NULL ならば その`~node文書$ / ~ELSE_ ~NULL ]とする。 ◎ Each browsing context bc has a container document, which is the result of running these steps: • If bc's container is null, then return null. • Return bc's container's node document.

注記: ~NULL でないならば、 %容器 の`~shadowも含む根$に等しくなる — %容器 は`接続されて$いるはずなので。 ◎ This is equal to bc's container's shadow-including root as bc's container has to be connected.

`閲覧文脈$ %子 の `親~閲覧文脈@ は、[ %子 の`容器~文書$ %文書 ~NEQ ~NULL ]~AND[ %文書 が`属する閲覧文脈$ %親 ~NEQ ~NULL ]を[ 満たすならば %親 / 満たさないならば ~NULL (無い) ]とする。

`閲覧文脈$ %子 の`親~閲覧文脈$ %親 ~NEQ ~NULL ならば、 %子 は %親 の `子~閲覧文脈@ であるとされる。 それに加え,[ %子 の`容器$bcは`文書~tree内$にある ]ならば、 %子 は %親 の `文書~treeに属する子~閲覧文脈@ であるとされる。

◎ A browsing context child is said to be a child browsing context of another browsing context parent, if child's container document is non-null and child's container document's browsing context is parent. ◎ A browsing context child is a document-tree child browsing context of parent if child is a child browsing context and child's container is in a document tree. ◎ A browsing context child may have a parent browsing context. This is the unique browsing context that has child as a child browsing context, if any such browsing context exists. Otherwise, the browsing context has no parent browsing context.

所与の`閲覧文脈$ %A, %B は、次を満たすならば, %A は %B の `先祖@ であるとされる ⇒ [ %A ~EQ %B の`親~閲覧文脈$ ]~OR[ %A は %B の ある`先祖$の`親~閲覧文脈$である ] ◎ A browsing context A is said to be an ancestor of a browsing context B if there exists a browsing context A' that is a child browsing context of A and that is itself an ancestor of B, or if the browsing context A is the parent browsing context of B.

`閲覧文脈$のうち[ `親~閲覧文脈$ ~EQ ~NULL ]なるものは、[ 自身, および それを`先祖$とするような閲覧文脈 ]すべての `~top-level閲覧文脈@ になる。 ◎ A browsing context that has no parent browsing context is the top-level browsing context for itself and all of the browsing contexts for which it is an ancestor browsing context.

各`~top-level閲覧文脈$には `~group@tbcG が結付けられる — それは、 ~NULL または`閲覧文脈~group$であり,初期~時は ~NULL とする。 ◎ A top-level browsing context has an associated group (null or a browsing context group). It is initially null.

新たな`閲覧文脈$を、 [ その`容器$bc ~EQ ~NULL ]にしたまま,ある`~top-level閲覧文脈$に関係するように作成することもアリである。 そのような閲覧文脈は、 `補助~閲覧文脈@ と呼ばれる。 補助~閲覧文脈は、常に`~top-level閲覧文脈$である。 ◎ It is possible to create new browsing contexts that are related to a top-level browsing context while their container is null. Such browsing contexts are called auxiliary browsing contexts. Auxiliary browsing contexts are always top-level browsing contexts.

`子~閲覧文脈$に対する, ~NULL でない`親~閲覧文脈$による推移閉包 【親を順々に辿って得られる先祖たち】 は、`先祖~閲覧文脈$の~listを成す。 ◎ The transitive closure of parent browsing contexts for a browsing context that is a child browsing context gives the list of ancestor browsing contexts.

`文書$ %文書 の `子孫~閲覧文脈~list@ は、次の~algoが返す~listで与えられる: ◎ The list of the descendant browsing contexts of a Document d is the (ordered) list returned by the following algorithm:

  1. %~list ~LET 新たな`~list$ ◎ Let list be an empty list.
  2. ~EACH( `閲覧文脈~容器$であって[ その`~shadowも含む根$ ~EQ %文書 ]なるもの %容器 ) に対し,`~shadowも含む~tree順序$で: ◎ For each browsing context container container, whose nested browsing context is non-null and whose shadow-including root is d, in shadow-including tree order:

    1. %入子の閲覧文脈 ~LET %容器 が`入子にしている閲覧文脈$ ◎ Let nestedBC be container's nested browsing context.
    2. ~IF[ %入子の閲覧文脈 ~EQ ~NULL ] ⇒ ~CONTINUE ◎ ↑
    3. %~list に %入子の閲覧文脈 を`付加する$ ◎ Append nestedBC to list.
    4. %~list を[ %入子の閲覧文脈 にて`作動中の文書$の`子孫~閲覧文脈~list$ ]で`拡張する$ ◎ Extend list with the list of the descendant browsing contexts of nestedBC's active document.
  3. ~RET %~list ◎ Return list.

`文書$ %文書 は、それが`属する閲覧文脈$ %B が次を満たすとき, `全部的に作動中@ であるとされる ⇒ [ %B ~NEQ ~NULL ]~AND[ %B にて`作動中の文書$ ~EQ %文書 ]~AND[ %B は次のいずれかを満たす ]: ◎ 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\

  • %B は`~top-level閲覧文脈$である ◎ d's browsing context is a top-level browsing context, or\
  • %B の`容器~文書$は`全部的に作動中$である ◎ d's container document is fully active.

`子~閲覧文脈$ %B は,要素に結付けられるので、常にその`親~閲覧文脈$に属する特定の`文書$ %文書 に束ねられる。 ~UAは、 %文書 が`全部的に作動中$でない下では、【! * 】利用者による %B とのやりとりを許容しないモノトスル。 ◎ Because they are associated with an element, child browsing contexts are always tied to a specific Document in their parent browsing context. User agents must not allow the user to interact with child browsing contexts of elements that are in Documents that are not themselves fully active.

`文書$が[ `作動中$であること, `全部的に作動中$であること ]の相違を、次の例で~~説明する。 ここでは、~browser~windowの中に `a.html^c が読込まれる結果、その `iframe$e の中に `b-1.html^c が読込まれる。 `b-2.html^c, `c.html^c は省略されている(それらは、単純に空~文書でもよい)。 ◎ The following example illustrates the differences between active and fully active Document objects. Here a.html is loaded into a browser window, b-1.html starts out loaded into an iframe as shown, and b-2.html and c.html are omitted (they can simply be an empty document).

<!-- a.html -->
<!DOCTYPE html>
<html lang="ja">
<title> 閲覧文脈 A </title>

<iframe src="b-1.html"></iframe>
<button onclick="frames[0].location.href = 'b-2.html'">~clickしてください</button>

<!-- b-1.html -->
<!DOCTYPE html>
<html lang="ja">
<title> 閲覧文脈 B </title>

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

この時点では、[ `a.html^c, `b-1.html^c, `c.html^c ]から与えられる文書は、どれも それぞれが`属する閲覧文脈$にて`作動中$にあり,また`全部的に作動中$でもある。 ◎ At this point, the documents given by a.html, b-1.html, and c.html are all the active documents of their respective browsing contexts. They are also all fully active.

ここで `button$e が~clickされたとすると、閲覧文脈 B の中へ `b-2.html^c から新たな`文書$が読込まれ,次の結果が得られる: ◎ After clicking on the button, and thus loading a new Document from b-2.html into browsing context B, we have the following results:

  • `a.html^c `文書$は、閲覧文脈 A にて`作動中$かつ`全部的に作動中$であり続ける。 ◎ The a.html Document remains both the active document of browsing context A, and fully active.
  • `b-1.html^c `文書$は、今や閲覧文脈 B にて`作動中$でない — よって、`全部的に作動中$でもない。 ◎ The b-1.html Document is now not the active document of browsing context B. As such it is also not fully active.
  • 新たな `b-2.html^c `文書$は、今や閲覧文脈 B にて`作動中$にあり,また`全部的に作動中$でもある。 ◎ The new b-2.html Document is now the active document of browsing context B, and is also fully active.
  • `c.html^c `文書$は、ある閲覧文脈 C にて依然として`作動中$にある。 しかしながら、 C の`容器~文書$は `b-1.html^c `文書$であり,`全部的に作動中$ではない — すなわち、 `c.html^c `文書$は,今や`全部的に作動中$でないことになる。 ◎ The c.html Document is still the active document of browsing context C. However, since C's container document is the b-1.html Document, which is itself not fully active, this means the c.html Document is now not fully active (even though it is active).

ここに孕まれる複階性について — とりわけ ~session履歴への影響i — について,もっと探求したければ、 A Model of Navigation History (~navi履歴の~model) `NAVMODEL$r を見よ。 ◎ For more explorations of the complexities involved here, especially as it impacts the session history, see A Model of Navigation History. [NAVMODEL]

各 `子~閲覧文脈$には、真偽値をとる `~load~event遅延-中@ が結付けられ,初期~時は ~F とする。 これは、`~navigate$に際して新たな`文書$が作成される前に,その`容器$bc向けの`~load~eventを遅延する$ために利用される。 ◎ A child browsing context can be put into a delaying load events mode. This is used when it is navigated, to delay the load event of its container before the new Document is created.

`閲覧文脈$ %B の `文書~族@ は、[ %B の`~session履歴$内にある`文書$ 【~session履歴を成す各`~session履歴~entry$の ~NULL でない`文書$shE】 ]すべてと[ それらの各`文書$の`文書~族$ ]すべての和集合からなる。 `文書$ %文書 の`文書~族$は、[ %文書 の`子孫~閲覧文脈~list$を成す各 `閲覧文脈$の`文書~族$ ]すべての和集合からなる。 ◎ The document family of a browsing context consists of the union of all the Document objects in that browsing context's session history and the document families of all those Document objects. The document family of a Document object consists of the union of all the document families of the browsing contexts in the list of the descendant browsing contexts of the Document object.

`閲覧文脈~容器$ %容器 の `内容~文書@ は、次の~algoの結果で与えられる: ◎ The content document of a browsing context container container is the result of the following algorithm:

  1. %B ~LET %容器 が`入子にしている閲覧文脈$ ◎ ↓
  2. ~IF[ %B ~EQ ~NULL ] ⇒ ~RET ~NULL ◎ If container's nested browsing context is null, then return null. ◎ Let context be container's nested browsing context.
  3. %文書 ~LET %B にて`作動中の文書$ ◎ Let document be context's active document.
  4. ~IF[ ( %文書 の`生成元$, %容器 の`~node文書$の`生成元$ ) は`同じ生成元~domain$でない ] ⇒ ~RET ~NULL ◎ If document's origin and container's node document's origin are not same origin-domain, then return null.
  5. ~RET %文書 ◎ Return document.

7.1.3. ~security

所与の`閲覧文脈$ %A, %B に対し, %A が %B に `近しい@ ( “ %A `is familiar with^en %B ” )とは、次のいずれかが満たされることを意味する: ◎ A browsing context A is familiar with a second browsing context B if one of the following conditions is true:

  • ( %A にて`作動中の文書$の`生成元$, %B にて`作動中の文書$の`生成元$ ) は`同一-生成元$である ◎ Either the origin of the active document of A is the same as the origin of the active document of B, or
  • [ %A は`子~閲覧文脈$である ]~AND[ %A の`~top-level閲覧文脈$ ~EQ %B ] ◎ The browsing context A is a child browsing context and its top-level browsing context is B, or
  • [ %B は`補助~閲覧文脈$である ]~AND[ %A は %B を`開いた閲覧文脈$に`近しい$ ] ◎ The browsing context B is an auxiliary browsing context and A is familiar with B's opener browsing context, or
  • %B のある`先祖~閲覧文脈$ %X が存在して ⇒ ( %A にて`作動中の文書$の`生成元$, %X にて`作動中の文書$の`生成元$ ) は`同一-生成元$である ◎ The browsing context B is not a top-level browsing context, but there exists an ancestor browsing context of B whose active document has the same origin as the active document of A (possibly in fact being A itself).

【 最初と最後の条件から、特に,[ %A ~EQ %B, または %A は %B の`先祖~閲覧文脈$である ]ならば、 %A は %B に`近しい$ことになる。 】


所与の`閲覧文脈$ %A, %B に対し、次の手続きが ~T を返すならば, %A は %B を `~navigateすることは許容されて@ いるとされる: ◎ A browsing context A is allowed to navigate a second browsing context B if the following algorithm returns true:

  1. ~IF[ %A ~EQ %B ] ⇒ ~RET ~T ◎ ↓
  2. %S ~LET[ %A にて`作動中の文書$ ]の`作動中の~sandbox法~flag集合$ ◎ ↓
  3. ~RET[ 次のいずれかが満たされるならば ~F / ~ELSE_ ~T ]:

    • [ %B は`~top-level閲覧文脈$ではない ]~AND[ %A は %B の`先祖~閲覧文脈$でない ]~AND[ `~navi$sbox ~IN %S ] ◎ If A is not the same browsing context as B, and A is not one of the ancestor browsing contexts of B, and B is not a top-level browsing context, and A's active document's active sandboxing flag set has its sandboxed navigation browsing context flag set, then return false.
    • [ %B は %A の`~top-level閲覧文脈$である ]~AND[[ %A にて`作動中の~window$の`一過な作動化$ ]に応じて,次のいずれかが満たされる ]: ◎ Otherwise, if B is a top-level browsing context, and is one of the ancestor browsing contexts of A, then:

      • ~T の場合 ⇒ `利用者~作動化~top-level~navi$sbox ~IN %S ◎ If A's active window has transient activation and A's active document's active sandboxing flag set has its sandboxed top-level navigation with user activation browsing context flag set, then return false.
      • ~F の場合 ⇒ `非~利用者~作動化~top-level~navi$sbox ~IN %S ◎ Otherwise, if A's active window does not have transient activation and A's active document's active sandboxing flag set has its sandboxed top-level navigation without user activation browsing context flag set, then return false.
    • [ %B は`~top-level閲覧文脈$である ]~AND[ %B は %A の`先祖~閲覧文脈$でない ]~AND[ `~navi$sbox ~NIN %S ]~AND[ %A は %B の`許可-済み~navigator$でない ] ◎ Otherwise, if B is a top-level browsing context, and is neither A nor one of the ancestor browsing contexts of A, and A's Document's active sandboxing flag set has its sandboxed navigation browsing context flag set, and A is not the one permitted sandboxed navigator of B, then return false. ◎ Return true.

【 最初の 2 つの段は、 3 番目の段を簡潔に記すための,訳者による追加。 】【 論理的には、 %A が %B を~navigateする機会が生じ得ないような場合( “互いに無縁な” 閲覧文脈など)も ~F を返すべきだが、不要なので省略されていると見受けられる。 】


要素 %E の `閲覧文脈~視野~生成元@ は、次を走らせた結果で与えられる:

  1. %文書 ~LET %E の`~node文書$
  2. %B ~LET %文書 が`属する閲覧文脈$
  3. ~IF[ %B ~EQ ~NULL ] ⇒ ~RET ε
  4. %生成元 ~LET %文書 の`生成元$
  5. %B の ~EACH ( `先祖~閲覧文脈$ %A ) に対し ⇒ ~IF[ ( %A にて`作動中の文書$の`生成元$, %生成元 ) は`同一-生成元$でない ] ⇒ ~RET ε
  6. ~RET %生成元
◎ An element has a browsing context scope origin if its Document's browsing context is a top-level browsing context or if all of its Document's ancestor browsing contexts all have active documents whose origin are the same origin as the element's node document's origin. If an element has a browsing context scope origin, then its value is the origin of the element's node document.

7.1.4. 閲覧文脈の~group分け

~UAは、 `閲覧文脈~group集合@ を保持する — それは、 0 個以上の`閲覧文脈~group$が成す`有順序~集合$である。 ◎ A user agent holds a browsing context group set (a set of browsing context groups).

各 `閲覧文脈~group@ は、 `閲覧文脈~集合@ を保持する — それは、 0 個以上の`~top-level閲覧文脈$が成す`有順序~集合$である。 ◎ A browsing context group holds a browsing context set (a set of top-level browsing contexts).

注記: `新たな閲覧文脈~groupを作成する$ときには、新たな【!ある】`~top-level閲覧文脈$が当の`閲覧文脈~group$に追加される。 後続して`閲覧文脈~group$に追加される`~top-level閲覧文脈$は、すべて`補助~閲覧文脈$である。 ◎ A top-level browsing context is added to the group when the group is created. All subsequent top-level browsing contexts added to the group will be auxiliary browsing contexts.

各 `閲覧文脈~group$には、 `~agent~cluster~map@ が結付けられる — それは、`~agent~cluster~key$から`~agent~cluster$への弱い`~map$である。 【 “弱い” とは,すなわち、】[ ある~agent~clusterに対し,それに~accessし得るものは無くなった ]と判断されるとき,それを【~garbage】収集するのは、~UAが担うとする。 ◎ A browsing context group has an associated agent cluster map (a weak map of agent cluster keys to agent clusters). User agents are responsible for collecting agent clusters when it is deemed that nothing can access them anymore.

【 ~map内の~keyとしての,`~agent~cluster~key$の同等性は、成分ごとの比較(生成元ならば`同一-生成元$)に基づくと見受けられる。 】

各`閲覧文脈~group$には、真偽値をとる `非同一-生成元~隔離-済み@bcG があり,初期~時には ~F とする。 ◎ A browsing context group has a cross-origin isolated boolean. It is initially false.

各`閲覧文脈~group$には、 `履歴上の~agent~cluster~key~map@ が結付けられる — それは、`生成元$から`~agent~cluster~key$への`~map$である。 この~mapは、[ 所与の生成元~用に,それまで どの~agent~cluster~keyが利用されていたか ]を記録することにより, 生成元~隔離 特能の一貫性を確保するために利用される。 ◎ A browsing context group has an associated historical agent cluster key map, which is a map of origins to agent cluster keys. This map is used to ensure the consistency of the origin isolation feature by recording what agent cluster keys were previously used for a given origin.

注記 `履歴上の~agent~cluster~key~map$を成す~entryは、当の`閲覧文脈~group$の存続期間~内に得られたものに限られる。 ◎ The historical agent cluster key map only ever gains entries over the lifetime of the browsing context group.

`新たな閲覧文脈~groupを作成する@ ときは、次の手続きを走らす: ◎ To create a new browsing context group, run these steps:

  1. %~group ~LET 新たな`閲覧文脈~group$ ◎ Let group be a new browsing context group.
  2. ~UAの`閲覧文脈~group集合$に %~group を`付加する$set ◎ Append group to the user agent's browsing context group set.
  3. %B ~LET `新たな閲覧文脈を作成する$( ~NULL, ~NULL, %~group ) ◎ Let browsingContext be the result of creating a new browsing context with null, null, and group.
  4. `閲覧文脈~groupに付加する$( %~group, %B ) ◎ Append browsingContext to group.
  5. ~RET %~group ◎ Return group.

`閲覧文脈~groupに付加する@ ときは、所与の ( `閲覧文脈~group$ %~group, `~top-level閲覧文脈$ %T ) に対し,次の手続きを走らす: ◎ To append a top-level browsing context browsingContext to a browsing context group group, run these steps:

  1. %~group の`閲覧文脈~集合$に %T を`付加する$set ◎ Append browsingContext to group's browsing context set.
  2. %T の`~group$tbcG ~SET %~group ◎ Set browsingContext's group to group.

`閲覧文脈~groupから除去する@ ときは、所与の ( `~top-level閲覧文脈$ %T ) に対し,次の手続きを走らす: ◎ To remove a top-level browsing context browsingContext, run these steps:

  1. ~Assert: %T の`~group$tbcG ~NEQ ~NULL — `閲覧文脈$が`破棄され$るのは一度限りなので。 ◎ Assert: browsingContext's group is non-null, because a browsing context only gets discarded once.
  2. %~group ~LET %T の`~group$tbcG ◎ Let group be browsingContext's group.
  3. %T の`~group$tbcG ~SET ~NULL ◎ Set browsingContext's group to null.
  4. %~group の`閲覧文脈~集合$から %T を`除去する$ ◎ Remove browsingContext from group's browsing context set.
  5. ~IF[ %~group の`閲覧文脈~集合$は`空$である ] ⇒ ~UAの`閲覧文脈~group集合$から %~group を`除去する$ ◎ If group's browsing context set is empty, then remove group from the user agent's browsing context group set.

注記: [ `閲覧文脈~groupに付加する$/`閲覧文脈~groupから除去する$ ]は、`閲覧文脈~group$の存続期間を定義し易くするための,~primitiveな演算である。 それらは、次に挙げる~algoから~callされる ⇒# `新たな閲覧文脈~groupを作成する$, `新たな補助~閲覧文脈を作成する$, `閲覧文脈を破棄する$ ◎ Append and remove are primitive operations that help define the lifetime of a browsing context group. They are called from creating a new browsing context group, creating a new auxiliary browsing context, and discarding a browsing context.


注記: この標準は、 “互いに関係する閲覧文脈~群”, “互いに関係するかつ生成元も類似な閲覧文脈~群” を定義していた。 これらは、必要十分でなかったので除去された。 ◎ The HTML Standard used to define "unit of related browsing contexts" and "unit of related similar-origin browsing contexts". These have been removed as they were not adequate.

7.1.5. 閲覧文脈~名

各 `閲覧文脈$は、 `閲覧文脈~名@ を持つ。 他が言明されない限り,空~文字列とする(名前がないことを表す)。 ◎ Browsing contexts can have a browsing context name. Unless stated otherwise, it is the empty string.

`妥当な閲覧文脈~名@ とは、[ 空でない ]~AND[ 最初の文字 ~NEQ `005F^U `_^smb ]を満たす文字列である。 (最初の文字 ~EQ `005F^U `_^smb なる文字列は、次に述べる特別な~keyword用に予約される。) ◎ A valid browsing context name is any string with at least one character that does not start with a U+005F LOW LINE character. (Names starting with an underscore are reserved for special keywords.)

`妥当な閲覧文脈~名または~keyword@ とは、次のいずれかを満たす文字列である:

  • `妥当な閲覧文脈~名$である
  • 次のいずれかに`~ASCII大小無視$で合致する ⇒ `_blank^l, `_self^l, `_parent^l, `_top^l
◎ A valid browsing context name or keyword is any string that is either a valid browsing context name or that is an ASCII case-insensitive match for one of: _blank, _self, _parent, or _top.

~pageの “~link等” ( ~link, ~script, ~form提出 等々)が指定する,`妥当な閲覧文脈~名または~keyword$ 値 — 以下,単に %名前 と記す — は、~pageが~sandbox化されているか否かに応じて、下の規範的でない “表 A” の 2 列目以降に要約されるような,それぞれに異なる意味を持つ: ◎ These values have different meanings based on whether the page is sandboxed or not, as summarized in the following (non-normative) table.\

  • 表の 1 列目には、 %名前, および追加的な条件が示される。
  • 表の 2 〜 4 列目 — ~~見出し[ “普通”, “無”, “有” ]の列 — は、表の 1 列目の条件の下で,どの`閲覧文脈$が~navigateされるかを与える:

    • “普通” の列は、次項の “無”, “有” いずれにも該当しないときの効果を与える。
    • [ “無” / “有” ]の列は、当の “~link等” が `iframe$e 内にあって, その `iframe^e は `sandbox$a 属性を有していて, その値に `allow-top-navigation$v ~keywordが[ 無いとき / 有るとき ]の効果を与える。

【 原文による表は、説明が省略され過ぎているので、この訳ではかなり加筆している。 】

加えて、 “表 A” に利用される~~記号の意味を次の表に示す:

記号 意味
`現-^i【!current】 %名前 を指定している “~link等” が所属している`文書$が`属する閲覧文脈$を指す。
`親^i【!parent】 `現-^i の`親~閲覧文脈$を指す。
`top^i `現-^i の`~top-level閲覧文脈$を指す。
`新-^i【!new】 新たな`~top-level閲覧文脈$(`補助~閲覧文脈$の場合もある)が作成されることを意味する。 これは、種々の[ 利用者による選好/~UAによる施策 ]の~subjectになる。
`ナシ^i【!none】 何も起きない(~navigateされる閲覧文脈はない)ことを意味する。
`新-?^i【!maybe new】 ( “無” / “有” の場合のみ) `iframe^e の `sandbox$a 属性に `allow-popups$v ~keywordも指定されているならば `新-^i と同じ。 他の場合は `ナシ^i と同じ(ただし,利用者が~sandbox法を上書きした(していた)場合は、 `新-^i になり得る)。
◎ In this table, "current" means the browsing context that the link or script is in, "parent" means the parent browsing context of the one the link or script is in, "top" means the top-level browsing context of the one the link or script is in, "new" means a new top-level browsing context or auxiliary browsing context is to be created, subject to various user preferences and user agent policies, "none" means that nothing will happen, and "maybe new" means the same as "new" if the "allow-popups" keyword is also specified on the sandbox attribute (or if the user overrode the sandboxing), and the same as "none" otherwise.
表 A
%名前, および追加的な条件 普通
%名前 は指定されていない ◎ none specified, for links and form submissions `現-^i `現-^i `現-^i
空~文字列 `現-^i `現-^i `現-^i
以下、~keywordによる %名前 の場合
`_blank^l `新-^i `新-?^i `新-?^i
`_self^l `現-^i `現-^i `現-^i
`_parent^l ~AND[ `親^i ~EQ ε ] ◎ _parent if there isn't a parent `現-^i `現-^i `現-^i
`_parent^l ~AND[ `親^i ~EQ `top^i ] ◎ _parent if parent is also top `親^i ( ~EQ `top^i ) `ナシ^i `親^i
`_parent^l ~AND[ `親^i ~NIN { ε, `top^i } ] ◎ _parent if there is one and it's not top `親^i `ナシ^i `ナシ^i
`_top^l ~AND[ `top^i ~EQ `現-^i ] ◎ _top if top is current `現-^i ( ~EQ `top^i ) `現-^i `現-^i
`_top^l ~AND[ `top^i ~NEQ `現-^i ] ◎ _top if top is not current `top^i `ナシ^i `top^i
以下、非~keywordによる %名前 の場合 — 記号 %B は、 %名前 を`名前$とする`閲覧文脈$を表すとする。
%B は存在しない ◎ name that doesn't exist `新-^i `新-?^i `新-?^i
%B は `現-^i の子孫である ◎ name that exists and is a descendant %B %B %B
%B ~EQ `現-^i ◎ name that exists and is current %B ( ~EQ `現-^i ) %B %B
[ %B は `現-^i の先祖である ]~AND[ %B ~EQ `top^i ] ◎ name that exists and is an ancestor that is top %B ( ~EQ `top^i ) `ナシ^i %B
[ %B は `現-^i の先祖である ]~AND[ %B ~NEQ `top^i ] ◎ name that exists and is an ancestor that is not top %B `ナシ^i `ナシ^i
[ %B は上のどれにも該当しない ]~AND[ %B の`~top-level閲覧文脈$ ~EQ `top^i ] ◎ other name that exists with common top %B `ナシ^i `ナシ^i
以下、 %B は上のどれにも該当しない場合
[ %B は `現-^i に`近しい$ ]~AND[ `現-^i は %B の`許可-済み~navigator$である ] ◎ name that exists with different top, if familiar and one permitted sandboxed navigator %B %B %B
[ %B は `現-^i に`近しい$ ]~AND[ `現-^i は %B の`許可-済み~navigator$でない ] ◎ name that exists with different top, if familiar but not one permitted sandboxed navigator %B `ナシ^i `ナシ^i
[ %B は `現-^i に`近しい$ ]でない ◎ name that exists with different top, not familiar `新-^i `新-?^i `新-?^i

~sandbox化された閲覧文脈に対する制約のほとんどは、他の~algo — 例えば `~navi$~algo — により適用される。 `閲覧文脈を選ぶ規則$ではなく。 ◎ Most of the restrictions on sandboxed browsing contexts are applied by other algorithms, e.g. the navigation algorithm, not the rules for choosing a browsing context given below.


`閲覧文脈を選ぶ規則@ は、所与の ( `閲覧文脈~名$ %名前, `閲覧文脈$ %現-, 真偽値 %noopener ) に対し,次に従う: ◎ The rules for choosing a browsing context, given a browsing context name name, a browsing context current, and a boolean noopener are as follows:

  1. %~window種別 ~LET `既存のまたはナシ^i ◎ Let chosen be null. ◎ Let windowType be "existing or none".
  2. %~sandbox法~flag集合 ~LET %現- にて`作動中の文書$にて`作動中の~sandbox法~flag集合$ ◎ Let sandboxingFlagSet be current's active document's active sandboxing flag set.
  3. %小文字~化~名 ~LET `~ASCII小文字~化する$( %名前 ) ◎ ↓
  4. %結果 ~LET %小文字~化~名 に応じて,次で与えられる閲覧文脈または ~NULL: ◎ ↑↓

    空~文字列
    `_self^l
    %現- ◎ If name is the empty string or an ASCII case-insensitive match for "_self", then set chosen to current.
    `_parent^l
    %現- の`親~閲覧文脈$ ~NEQ ~NULL ならば それ / ~ELSE_ %現- ◎ Otherwise, if name is an ASCII case-insensitive match for "_parent", set chosen to current's parent browsing context, if any, and current otherwise.
    `_top^l
    %現- の`~top-level閲覧文脈$ ~NEQ ε ならば それ / ~ELSE_ %現- ◎ Otherwise, if name is an ASCII case-insensitive match for "_top", set chosen to current's top-level browsing context, if any, and current otherwise.
    `_blank^l
    ~NULL
    その他

    ~IF[ 次のいずれも満たすような閲覧文脈 %B は存在する ]…

    • %B の`名前$ ~EQ %名前
    • %現- は %B に`近しい$
    • ~UAは, %現-, %B が互いに到達してもよいほどに十分~関係すると決定した

    …ならば ⇒ そのような閲覧文脈のうちのいずれか ⇒ 該当する %B が複数ある場合、~UAは,そのうち一つを[ 何らかの,一貫した, 任意な方式 ]で選定するベキである — 例えば[ 最も近過去に開いたもの / 最も近過去に~focusされたもの / より近く関係するもの ]など。

    ~ELSE ⇒ ~NULL

    ◎ Otherwise, if name is not an ASCII case-insensitive match for "_blank", there exists a browsing context whose name is the same as name, current is familiar with that browsing context, and the user agent determines that the two browsing contexts are related enough that it is ok if they reach each other, set chosen to that browsing context. If there are multiple matching browsing contexts, the user agent should set chosen to one in some arbitrary consistent manner, such as the most recently opened, most recently focused, or more closely related.
    これは、 課題 #313 にて,もっと精確に定められることになる。 ◎ This will be made more precise in issue #313.
  5. ~IF[ %結果 ~NEQ ~NULL ] ⇒ ~RET ( %結果, %~window種別 ) ◎ ↑
  6. ~Assert: 新たな閲覧文脈が要請されている — 何が起こるかは、~UAの環境設定と能に依存する ◎ Otherwise, a new browsing context is being requested, and what happens depends on the user agent's configuration and abilities — it is determined by the rules given for the first applicable option from the following list:
  7. ~ELIF[ `補助~navi$sbox ~IN %~sandbox法~flag集合 ] ⇒ ~UAは、~popupを阻止したことを開発者~consoleに報告してもヨイ ◎ If sandboxingFlagSet has the sandboxed auxiliary navigation browsing context flag set • The user agent may report to a developer console that a popup has been blocked.
  8. ~ELIF[ ~UAは新たな閲覧文脈を作成するように環境設定されている ]: ◎ If the user agent has been configured such that in this instance it will create a new browsing context

    1. %~window種別 ~SET `制約されない新たな^i ◎ Set windowType to "new and unrestricted".
    2. ~IF[ %現- の`~top-level閲覧文脈$にて`作動中の文書$の`非同一-生成元~opener施策$doc ~IN { `same-origin$coop, `same-origin-plus-COEP$coop } ]: ◎ If current's top-level browsing context's active document's cross-origin opener policy is "same-origin" or "same-origin-plus-COEP", then:

      1. %現-文書 ~LET %現- にて`作動中の文書$ ◎ Let currentDocument be current's active document.
      2. ~IF[ ( %現-文書 の`生成元$, %現-文書 に`関連な設定群~obj$の`~top-level生成元$enV ) は`同一-生成元$でない ] ⇒# %noopener ~SET ~T, %名前 ~SET `_blank^l, %~window種別 ~SET `~openerが無い新たな^i ◎ If currentDocument's origin is not same origin with currentDocument's relevant settings object's top-level origin, then set noopener to true, name to "_blank", and windowType to "new with no opener".

        注記: `非同一-生成元~opener施策$が在る下では、入子にされた文書のうち[ その~top-level閲覧文脈にて作動中の文書とは非同一-生成元に属するもの ]の %noopener は,常に ~T に設定される。 ◎ In the presence of a cross-origin opener policy, nested documents that are cross-origin with their top-level browsing context's active document always set noopener to true.

    3. ~IF[ %noopener ~EQ ~T ] ⇒ %結果 ~SET `新たな~top-level閲覧文脈を作成する$ ◎ If noopener is true, then set chosen to the result of creating a new top-level browsing context.
    4. ~ELSE: ◎ Otherwise:

      1. %結果 ~SET `新たな補助~閲覧文脈を作成する$( %現- ) ◎ Set chosen to the result of creating a new auxiliary browsing context with current.
      2. ~IF[ `~navi$sbox ~IN %~sandbox法~flag集合 ] ⇒ %結果 の`許可-済み~navigator$ ~SET %現- ◎ If sandboxingFlagSet's sandboxed navigation browsing context flag is set, then current must be set as chosen's one permitted sandboxed navigator.
    5. ~IF[ `~sandboxは補助~閲覧文脈に伝播する~flag$ ~IN %~sandbox法~flag集合 ] ⇒ %結果 の`~popup~sandbox法~flag集合$に %~sandbox法~flag集合 を成すすべての~flagを追加する ◎ If sandboxingFlagSet's sandbox propagates to auxiliary browsing contexts flag is set, then all the flags that are set in sandboxingFlagSet must be set in chosen's popup sandboxing flag set.
    6. ~IF[ %小文字~化~名 ~NEQ `_blank^l ] ⇒ %結果 の`名前$ ~SET %名前 ◎ If name is not an ASCII case-insensitive match for "_blank", then set chosen's name to name.

    注記: 新たに作成された`閲覧文脈$が即時に`~navigate$される場合、その~naviは, `履歴~取扱い$V を `置換-$i に設定する下で行われることになる。 ◎ If the newly created browsing context is immediately navigated, then the navigation will be done with historyHandling set to "replace".

  9. ~ELIF[ ~UAは %現- を再利用するように環境設定されている ] ⇒ %結果 ~SET %現- ◎ If the user agent has been configured such that in this instance it will reuse current • Set chosen to current.
  10. ~ELSE( ~UAは閲覧文脈を見出さないように環境設定されている) ⇒ 何もしない ◎ If the user agent has been configured such that in this instance it will not find a browsing context • Do nothing.

    注記: ~UAには、[ ~UAが常に %現- を再利用するように環境設定する仕方 ]を利用者に供することが奨励される。 ◎ User agents are encouraged to provide a way for users to configure the user agent to always reuse current.

  11. ~RET ( %結果, %~window種別 ) ◎ Return chosen and windowType.

7.2. `Window^I, `WindowProxy^I, `Location^I ~obj用の~security基盤

【 この節の内容は、 別ページ にて。 】