7. Web ページの読み込み — Loading Web pages

HTML Living Standard — 最終更新 2017 年 5 月 17 日


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を~~参照されたし。

  • 用語[ `文書@ , `~window@ ]は、順に[ `Document$I, `Window$I ]~interfaceを実装する~objの略記である。

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.

各 `閲覧文脈$は、対応する `WindowProxy$I ~objを持つ。 ◎ A browsing context has a corresponding WindowProxy object.

各 `閲覧文脈$は、`~session履歴$を持つ。 それは、`閲覧文脈$が呈示-[ した/している/することになる ]`文書$たちからなる。

`閲覧文脈$ %B にて `作動中の文書@ は、 %B の `WindowProxy$I ~objの `Window$sl 内部~slot値に`結付けられている文書$である。

`文書$ %文書 が `属する閲覧文脈@ は、次で与えられる:

  • `破棄-$されていない`閲覧文脈$ %B があって,[ %文書 ~IN %B の`~session履歴$ ]ならば %B である。 `同じ文書が複数の~session履歴に含まれることはない。^tnote
  • 他の場合 ε (~~存在しない)。
◎ 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.

注記: 一般に,`~window$から`閲覧文脈に属する$`文書$へは一対一に対応するが、例外が二つある:

  • 一つは、`~window$は,同じ`閲覧文脈$内で二番目の`文書$を呈示するために再利用されることもあり、その場合,対応関係は一対二になる†。 これは、[ `置換え可能化~flag$ ~SET ~ON ]の下で,`閲覧文脈$が初期 `about_blank$sc `文書$から別の文書へ`~navigate$されるときに生じる。
  • もう一つは、 `document.open()$m ~methodが利用される結果として,いくつかの`~window$間で同じ`文書$が再利用される††こともある — この場合、対応関係は多対一になる。

【† この一対二は,異なる時点も含めてのことであり、任意のある時点では,一義的に対応する — そのため、仕様の記述では、文書と~windowは,他の~objとの~~関係を述べるときに同一視されることも多い — 例えば “~windowの閲覧文脈” は、実際には “~windowに結付けられている文書が属する閲覧文脈” の略記である(そう解釈する下で,和訳している)。 】【†† 再利用されると言っても、文書の内容は ~openした資源で一新される。 】

◎ 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 browsing context. There are two exceptions. First, 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 replacement enabled. Second, a Document can end up being reused for several Window objects when the document.open() method is used, such that the mapping is then many-to-1.

注記: `文書$は必ずしも`閲覧文脈$に属するとは限らない。 特に,~data集析~toolは、およそ閲覧文脈を~instance化することはないであろう。 `createDocument()$m などの ~APIを利用して作成された`文書$は、`閲覧文脈に属する$ことは決してない。 また、 `iframe$e 要素に対し作成された`文書$があって,後にその要素が`文書から除去され$たときは、その文書が`属する閲覧文脈$は`破棄-$され,文書が`属する閲覧文脈$は ε になる。 ◎ A Document does not necessarily have a browsing context associated with it. In particular, data mining tools are likely to never instantiate browsing contexts. A Document created using an API such as createDocument() never has a 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$ %~window (省略時は ε ) ) に対し,次を走らす: ◎ To set the active document of a browsing context browsingContext to a Document object document, optionally with a Window object window, run these steps:

  1. ~IF[ %~window ~EQ ε ] ⇒ %~window ~SET %文書 に`関連する大域~obj$ ◎ If window is not given, let window be document's relevant global object.

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

  2. %B の `WindowProxy$I の `Window$sl 内部~slot値 ~SET %window ◎ Set browsingContext's WindowProxy object's [[Window]] internal slot value to window.
  3. %window に`結付けられている文書$ ~SET %文書 ◎ Set window's associated Document to document.
  4. %~window に`関連する設定群~obj$の`実行~準備済み~flag$enV ~SET ~ON ◎ Set window's relevant settings object's execution ready flag.

`閲覧文脈$ %B の `作成元~閲覧文脈@ とは、 %B の作成を担当していたとされる`閲覧文脈$であり,次で定義される:

  1. %B の`親~閲覧文脈$ ~NEQ ε ならば、それ。
  2. 他の場合, %B を`開いた閲覧文脈$ ~NEQ ε ならば、それ。
  3. 他の場合、 ε。
◎ A browsing context can have a creator browsing context, the browsing context that was responsible for its creation. If a browsing context has a parent browsing context, then that is its creator browsing context. Otherwise, if the browsing context has an opener browsing context, then that is its creator browsing context. Otherwise, the browsing context has no creator browsing context.

`閲覧文脈$ %B の`作成元~閲覧文脈$ %作成元 ~NEQ ε ならば、 %B には次のものが結付けられる( %作成元 ~EQ ε の場合、これらは いずれも ε とする)。 以下における %作成元~文書 は %B の作成-時に %作成元 にて`作動中の文書$であった`文書$とする: ◎ If a browsing context context has a creator browsing context creator, it also has the following properties. In what follows, let creator document be creator's active document at the time context is created:

`作成元の生成元@
%作成元~文書 の`生成元$ ◎ creator document's origin
`作成元の~URL@
%作成元~文書 の`~URL$doc ◎ creator document's URL
`作成元の基底~URL@
%作成元~文書 の`基底~URL$doc ◎ creator document's base URL
`作成元の~referrer施策@
%作成元~文書 の`~referrer施策$doc ◎ creator document's referrer policy
`作成元の文脈~保安@
%作成元~文書 に`関連する設定群~obj$に対し,`設定群は保安的~文脈であるか?$を実行した結果 ◎ The result of executing Is environment settings object a secure context? on creator document's relevant settings object

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

  1. %B ~LET 新たな`閲覧文脈$ ◎ Let browsingContext be a new browsing context.
  2. %window ~LET 新たな`~window$ ◎ ↓
  3. %windowProxy ~LET 新たな `WindowProxy$I ~obj ◎ ↓

  4. %~realm実行~文脈 ~LET 次のように~customizeする下で~JS `InitializeHostDefinedRealm()$jA 抽象~演算を~callして作成される`~JS実行~文脈$: ◎ Call the JavaScript InitializeHostDefinedRealm() abstract operation with the following customizations:

    • 大域~obj には %window を利用する ◎ For the global object, create a new Window object window.
    • 大域 `this^js 値 には %windowProxy を利用する ◎ For the global this value, use browsingContext's WindowProxy object. ◎ Let realm execution context be the created JavaScript execution context.
  5. %設定群~obj ~LET %~realm実行~文脈 で`~window用に環境~設定群~objを設定して$おいた結果 ◎ Set up a window environment settings object with realm execution context, and let settingsObject be the result.
  6. %文書 ~LET 次のようにされた新たな`文書$:

    • `過去互換~mode$docにおいては ⇒ %文書 の`種別$doc ~SET `html^l
    • `内容~型$doc ~SET `text/html^l
    • 即時に,`読込後~taskは準備済み$になる
    • 即時に,`完全に読込まれ$る
    ◎ Let document be a new Document, marked as an HTML document in quirks mode, whose content type is "text/html", and which is both ready for post-load tasks and completely loaded immediately.
  7. %文書 は、単独の子 `html$e ~nodeを持ち,その~nodeは二つの空の子~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.
  8. %B にて`作動中の文書を設定する$( %文書 ) ◎ Set the active document of browsingContext to document.
  9. ~IF[ %B の`作成元~閲覧文脈$ ~NEQ ε ] ⇒ %文書 の ( `生成元$, `~referrer$doc, `~referrer施策$doc ) ~SET %B の ( `作成元の生成元$, `作成元の~URL$を`~URL直列化器$にかけた結果, `作成元の~referrer施策$)

    ~ELSE ⇒ %文書 の`生成元$ ~SET `不透明な生成元$

    ◎ Set the origin of document: • If browsingContext has a creator browsing context, then the origin of document is the creator origin. • Otherwise, the origin of document is a unique opaque origin. ◎ If browsingContext has a creator browsing context, then set document's referrer to the serialization of creator URL. ◎ If browsingContext has a creator browsing context, then set document's referrer policy to the creator referrer policy.
  10. %文書 に対し`~sandboxingを実装する$ ◎ Implement the sandboxing for document.
  11. %文書 に対し`~allowX~flagを設定する$ ◎ Set the allow* flags for document.
  12. %B の`~session履歴$に %文書 を追加する ◎ Add document to browsingContext's session history.
  13. ~RET %B ◎ Return browsingContext.

7.1.1. 入子の閲覧文脈

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

%要素 が `入子にしている閲覧文脈@ は、そのような`閲覧文脈$ %B が存在するならば それ / 存在しなければ ~NULL と定義される。 前者の場合: ◎ Each browsing context container has a nested browsing context, which is either a browsing context or null.

  • %B は`入子の閲覧文脈$である,ともいう(すなわち、この言い回しは非 ~NULL も含意する)。
  • %B は %要素 を `通して入子にされ@ ているという。 加えて、 %要素 の`~node文書$を %文書 とするとき、 %B は %文書 を`通して入子にされ$ているともいう。

【 同じ要素が複数の閲覧文脈を(直に)入子にしたり,複数の要素が同じ閲覧文脈を入子にすることはない。 】

◎ If a browsing context is the nested browsing context of a browsing context container, then the browsing context is said to be nested through the browsing context container's node document.

`閲覧文脈$ %子 は、次の条件すべてを満たすならば,別の`閲覧文脈$ %親 の `子~閲覧文脈@ とされる: ◎ A browsing context child is said to be a child browsing context of another browsing context parent, if all of the following conditions hold:

  • ある`閲覧文脈~容器$ %要素 があって, %子 ~EQ %要素 が`入子にしている閲覧文脈$ ◎ child is a nested browsing context of a browsing context container element
  • %要素 は`接続されて$いる ◎ element is connected
  • %親 ~EQ %要素 の`~shadowも含む根$が`属する閲覧文脈$ ◎ element's shadow-including root's browsing context is parent

更には, %親 の`子~閲覧文脈$ %子 は、 %子 の`閲覧文脈~容器$が`文書~木~内$にあるならば, %親 の`文書~木に属する子~閲覧文脈@ であるという。 ◎ A browsing context child is then a document-tree child browsing context of parent if it is a child browsing context and its browsing context container is not just connected, but also in a document tree.

`閲覧文脈$ %子 が`子~閲覧文脈$であるならば、前述の %親 は %要素 から %文書 を通して一意に定まる。 この %親 を指して, %子 の `親~閲覧文脈@ という。 %子 が`子~閲覧文脈$でないならば、 %子 の`親~閲覧文脈$ ~EQ ε (存在しない)と定義される。 ◎ 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 は %B の`親~閲覧文脈$である
  • %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.

`入子の閲覧文脈$でない`閲覧文脈$ %B の`親~閲覧文脈$は ε である。 このとき、 %B は,[ %B を`先祖$とするような閲覧文脈 ]すべての `~top-level閲覧文脈@ になる。 ◎ A browsing context that is not a nested browsing context has no parent browsing context, and is the top-level browsing context of all the browsing contexts for which it is an ancestor browsing context.

【 “`~top-level閲覧文脈$である” ことに`子~閲覧文脈$の存在が要求されるわけではない。 ~top-level閲覧文脈 %B 自身の~top-level閲覧文脈も %B である。 (例えば`補助~閲覧文脈$) 】

`閲覧文脈$に対する,非 ε の`親~閲覧文脈$による推移閉包 `親を順々に辿って得られる先祖たち^tnote は、`先祖~閲覧文脈$の~listを成す。 ◎ The transitive closure of parent browsing contexts for a browsing context that is a nested 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. %L ~LET %文書 `木~内にある$各 要素を`通して入子にされ$ている`閲覧文脈$からなる,要素たちの`木~順序$による~list ◎ For each child browsing context of d that is nested through an element that is in the Document d, in the tree order of the elements nesting those browsing contexts, run these substeps:
  3. ~FOR %L 内の ~EACH ( `閲覧文脈$ %B ) に対し: ◎ ↑

    1. %~list の末尾に %B を付加する ◎ Append that child browsing context to the list list.
    2. %~list の末尾に[ %B にて`作動中の文書$の `子孫~閲覧文脈~list$ ]を付加する ◎ Append the list of the descendant browsing contexts of the active document of that child browsing context to the list list.
  4. ~RET %~list ◎ Return the constructed list.

`作動中の文書$は、自身が`属する閲覧文脈$ %B が次を満たすならば, `全部的に作動中@ であるという:

  • %B は`~top-level閲覧文脈$であるか,または
  • %B の`親~閲覧文脈$ %P ~NEQ ε ~AND %B は %P において`全部的に作動中$である文書を`通して入子にされ$ている
◎ A Document is said to be fully active when it has a browsing context and it is the active document of that browsing context, and either its browsing context is a top-level browsing context, or it has a parent browsing context and the Document through which it is nested is itself fully active.

`子~閲覧文脈$ %B は,要素に結付けられるので、常にその`親~閲覧文脈$に属する特定の`文書$ %文書 に束ねられる。 ~UAは、 %文書 が`全部的に作動中$でない下では、利用者による %B とのやりとりを許容しては~MUST_NOT。 ◎ 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.

`入子の閲覧文脈$は、 `~load~event遅延~中~mode@ 下に置かれ得る。 この~modeは、`~navigate$に際して新たな`文書$が作成される前に,その`閲覧文脈~容器$向けの`~load~eventを遅延する$ために利用される。 ◎ A browsing context that is a nested 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 browsing context container before the new Document is created.

`閲覧文脈$ %B の `文書~族@ は、[ %B の`~session履歴$内にある`文書$ ]すべてと, [ それらの各`文書$の`文書~族$ ]すべての和集合からなる。 `文書$ %文書 の`文書~族$は、[ %文書 を`通して入子にされ$ている各 `閲覧文脈$の`文書~族$ ]すべての和集合からなる。 ◎ 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 that are nested through the Document object.

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

  1. %B ~LET %C が`入子にしている閲覧文脈$
  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[ %文書 の`生成元$ ~NEQ`~domain$sub `現在の設定群~obj$により指定される`生成元$enV ] ⇒ ~RET ~NULL ◎ If document's origin and the origin specified by the current settings object are not same origin-domain, then return null.
  5. ~RET %文書 ◎ Return document.

7.1.2. 補助~閲覧文脈

新たな閲覧文脈を、要素を`通して入子にされ$ないが,ある`~top-level閲覧文脈$には関係するように作成することも可能0である。 そのような閲覧文脈は、 `補助~閲覧文脈@ と呼ばれる。 補助~閲覧文脈は、常に`~top-level閲覧文脈$である。 ◎ It is possible to create new browsing contexts that are related to a top-level browsing context without being nested through an element. Such browsing contexts are called auxiliary browsing contexts. Auxiliary browsing contexts are always top-level browsing contexts.

`補助~閲覧文脈$ %B を作成させた`閲覧文脈$を指して、 %B を `開いた閲覧文脈@ という(そのようなものがなければ、開いた閲覧文脈は ε とする)。 ◎ An auxiliary browsing context has an opener browsing context, which is the browsing context from which the auxiliary browsing context was created.

7.1.3. 保安

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

  • [ %A にて`作動中の文書$の`生成元$ ]~EQ`生成元$sub[ %B にて`作動中の文書$の`生成元$ ] ◎ Either the origin of the active document of A is the same as the origin of the active document of B, or
  • %A の`~top-level閲覧文脈$ ~EQ %B ◎ The browsing context A is a nested browsing context with a top-level 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 にて`作動中の文書$の`生成元$ ]~EQ`生成元$sub[ %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 に対し、次の手続きが `許容される^i を返すならば, %A は %B に対する `~navigateが許容され@ るとされる: ◎ A browsing context A is allowed to navigate a second browsing context B if the following algorithm terminates positively:

  1. ~IF[ %A ~EQ %B ] ⇒ ~RET `許容される^i ◎ ↓
  2. %S ~LET[ %A にて`作動中の文書$ ]の`作動中の~sandbox用~flag集合$ ◎ ↓
  3. ~IF[ 次のいずれかが満たされる ] ⇒ ~RET `許容されない^i

    • [ %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 abort these steps negatively.
    • [ %B は %A の`~top-level閲覧文脈$である ]~AND[ 次のいずれかが満たされる ]: ◎ Otherwise, if B is a top-level browsing context, and is one of the ancestor browsing contexts of A, then:

      • [ この~algoは`利用者による作動化から誘発されて$いる ]~AND[ `利用者~作動化~top-level~navi$sbox ~IN %S ] ◎ If this algorithm is triggered by user 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 abort these steps negatively.
      • [ この~algoは`利用者による作動化から誘発されて$いない ]~AND[ `非~利用者~作動化~top-level~navi$sbox ~IN %S ] ◎ Otherwise, If this algorithm is not triggered by user 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 abort these steps negatively.
    • [ %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 abort these steps negatively.
  4. ~RET `許容される^i ◎ Otherwise, terminate positively!

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


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

  1. %文書 ~LET %E の`~node文書$
  2. %B ~LET %文書 が`属する閲覧文脈$
  3. ~IF[ %B ~EQ ε ] ⇒ ~RET ε
  4. %生成元 ~LET %文書 の`生成元$
  5. ~FOR %B の ~EACH ( `先祖~閲覧文脈$ %A ) に対し ⇒ ~IF[ %A にて`作動中の文書$の`生成元$ ~NEQ`生成元$sub %生成元 ] ⇒ ~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分け

所与の`閲覧文脈$ %A に対し,次のいずれかを満たす`閲覧文脈$ %B は、 %A から `直接到達可能@ とされる: ◎ Each browsing context is defined as having a list of one or more directly reachable browsing contexts. These are:

  • %B ~EQ %A ◎ The browsing context itself.
  • %B の`親~閲覧文脈$ ~EQ %A ◎ All the browsing context's child browsing contexts.
  • %B ~EQ %A の`親~閲覧文脈$ ◎ The browsing context's parent browsing context.
  • %B を`開いた閲覧文脈$ ~EQ %A ◎ All the browsing contexts that have the browsing context as their opener browsing context.
  • %B ~EQ %A を`開いた閲覧文脈$ ◎ The browsing context's opener browsing context.

【 この関係は、反射律と対称律を満たす(そのことが明白になるよう,ここでは 原文を等価な形に言い換えている)。 】

`直接到達可能$な関係による推移閉包は、 `互いに関係する閲覧文脈~群@ を形成する。 ◎ The transitive closure of all the browsing contexts that are directly reachable browsing contexts forms a unit of related browsing contexts.

【 すなわち、推移律も満たすように — したがって,同値律を満たすように — “直接到達可能” を拡張した関係に基づく,同値類。 】

各 `互いに関係する閲覧文脈~群$は,更に、各~groupが次を満たすような,最も少数の~groupに分けられる ⇒ ~groupのどの~memberも,その`作動中の文書$の`生成元$は,[ `document.domain$m 属性に対する適切な操作 ]を通して,~groupの他の~memberにて`作動中の文書$のそれと`同じ生成元~domain$にできる一方で、他の~groupの~memberとは同じにできない。

そのような各~groupを `互いに関係するかつ生成元も類似する閲覧文脈~群@ という。

【 この定義が~well-definedになるためには, “適切な操作〜” が 対称律を満たす(可逆になる)必要があるが、それを確かめるためには,この仕様~全体を精査する必要がある。 おそらく、[ 2 つの~memberが同じ~groupに属するのは、両者 に対し ある適切な操作を施した結果が`同じ生成元~domain$になるとき ]と解釈されるべきに思われる(そう解釈すれば精査する必要もなくなる)。 】

◎ Each unit of related browsing contexts is then further divided into the smallest number of groups such that every member of each group has an active document with an origin that, through appropriate manipulation of the document.domain attribute, could be made to be same origin-domain with other members of the group, but could not be made the same as members of any other group. Each such group is a unit of related similar-origin browsing contexts.

注記: 各 `互いに関係するかつ生成元も類似する閲覧文脈~群$ が持ち得る`~event-loop$は高々一つまでである(一方で、複数の`互いに関係するかつ生成元も類似する閲覧文脈~群$は,同じ`~event-loop$を共有し得る)。 ◎ There is also at most one event loop per unit of related similar-origin browsing contexts (though several units of related similar-origin browsing contexts can have a shared event loop).

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.

頁の “~link等” ( ~link, ~script, ~form提出 等々)が指定する,`妥当な閲覧文脈~名または~keyword$ 値 — 以下,単に %名前 と記す — は、頁が~sandbox化されているか否かに応じて、下の規範的でない “表 A” の 2 列目以降に要約されるような,それぞれに異なる意味を持つ:

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

  • 表の 1 列目には、 %名前, および追加の条件が示される。
  • 表の~~見出し[ “普通” / “無” / “有” ]の列は、表の 1 列目の条件の下で,どの`閲覧文脈$が~navigateされるかを与える( `なし^i と記されている場合、~navigateされる閲覧文脈はない)。
  • [ “無” / “有” ]の列は、当の “~link等” が `iframe$e 内にあって,その `iframe^e は `sandbox$a 属性を有しているときの,その属性~値に `allow-top-navigation$v ~keywordが[ 無いとき / 有るとき ]の効果を与える。
  • “普通” の列は、 “無” / “有” に該当しないときの効果を与える。

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

記号 意味
`現^i %名前 を指定している “~link等” が所属している`文書$が`属する閲覧文脈$を指す。
`親^i `現^i の`親~閲覧文脈$を指す。
`top^i `現^i の`~top-level閲覧文脈$を指す。
`新^i 新たな`~top-level閲覧文脈$(`補助~閲覧文脈$の場合もある)が作成されることを意味する。 これは、種々の[ 利用者による選好/~UAによる施策 ]の対象0になる。
`なし^i 何も起きないことを意味する。
`新?^i ( “無” / “有” の場合のみ) `iframe^e の `sandbox$a 属性~上に `allow-popups$v ~keywordも指定されているならば `新^i と同じ。 他の場合は `なし^i と同じ(ただし,利用者が~sandboxingを上書きした(していた)場合は、 `新^i になり得る)。
◎ These values have different meanings based on whether the page is sandboxed or not, as summarized in the following (non-normative) table. 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 )◎parent/top `なし^i `親^i◎parent/top
`_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◎specified descendant %B◎specified descendant %B◎specified descendant
%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 )◎specified ancestor `なし^i %B◎specified ancestor/top
%B は `現^i の先祖である ~AND %B ~NEQ `top^i ◎ name that exists and is an ancestor that is not top %B◎specified ancestor `なし^i `なし^i
%B は上に該当しない ~AND %B の`~top-level閲覧文脈$ ~EQ `top^i ◎ other name that exists with common top %B◎specified `なし^i `なし^i
以下、 %B の`~top-level閲覧文脈$ ~NEQ `top^i の場合
%B は `現^i に`近しい$ ~AND `現^i は %B の`許可済み~navigator$である ◎ name that exists with different top, if familiar and one permitted sandboxed navigator %B◎specified %B◎specified %B◎specified
%B は `現^i に`近しい$ ~AND `現^i は %B の`許可済み~navigator$でない ◎ name that exists with different top, if familiar but not one permitted sandboxed navigator %B◎specified `なし^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.


( `閲覧文脈~名$または ~NULL である %名前, `閲覧文脈$ %現 ) が与えられた下で, `閲覧文脈を選ぶ規則@ は、次に従う: ◎ The rules for choosing a browsing context, given null or a browsing context name name and a browsing context current, are as follows:

  1. %小文字~名 ~LET [ %名前 ~EQ ~NULL ならば ~NULL / ~ELSE_ %名前 を`~ASCII小文字~化$した結果 ] ◎ ↓
  2. %結果 ~SET %小文字~名 に応じて,次で与えられる閲覧文脈または ~NULL: ◎ Let chosen be null. ◎ Let new be false.

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

    これは、 issue #1440 にて,もっと精確に定められることになる。

    ◎ If name is not an ASCII case-insensitive match for "_blank" and there exists a browsing context whose name is the same as name, and 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, then 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. ◎ This will be made more precise in issue #1440.
  3. ~IF[ %結果 ~NEQ ~NULL ] ⇒ ~RET ( %結果, ~F )
  4. ~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:
  5. %新 ~LET ~F ◎ ↑↑
  6. %~flag集合 ~LET[ %現 にて`作動中の文書$ ]の`作動中の~sandbox用~flag集合$ ◎ ↓
  7. ~ELIF[ `補助~navi$sbox ~IN %~flag集合 ]: ◎ If current's active document's active sandboxing flag set has the sandboxed auxiliary navigation browsing context flag set.

    1. ~UAの任意選択で、利用者に,次の選択肢を提供0する: ◎ The user agent may offer the user one of:

      • 新たな~top-level閲覧文脈 ⇒ ( %結果, %新 ) ~SET ( `新たに作成-$した`~top-level閲覧文脈$, ~T ) ◎ Set chosen to a new top-level browsing context and new to true.
      • 既存のものを再利用する ⇒ %結果 ~SET 既存の`~top-level閲覧文脈$ ◎ Set chosen to an existing top-level browsing context.
      • 辞退する

      この事例が生じた場合、~linkを開こうと試行している文書は,作者が明示的に~sandbox化していることを意味する。 ◎ If this case occurs, it means that an author has explicitly sandboxed the document that is trying to open a link.

    注記: 利用者が辞退した場合/~UAが上の選択肢を提供0しなかった場合、 %結果, %新 はそのままにされる。 ◎ If the user declines or the user agent doesn't offer the above, the variables remain unchanged.

  8. ~ELIF[ ~UAは新たな閲覧文脈を作成するように環境設定されている ]: ◎ If the user agent has been configured such that in this instance it will create a new browsing context:

    1. ( %結果, %新 ) ~SET ( 新たな閲覧文脈, ~T )
    2. %結果 を`開いた閲覧文脈$ ~SET %現
    3. %結果 の`名前$ ~SET [ %小文字~名 ~NEQ `_blank^l ならば %名前 / ~ELSE_ 空~文字列 ]
    ◎ Set chosen to a new auxiliary browsing context, with the opener browsing context being current, and set new to true. If name is not an ASCII case-insensitive match for "_blank", then chosen's name must be set to name (otherwise, it has no name).

    注記: 新たに作成された`閲覧文脈$が即時に`~navigate$される場合、その~naviは,[ `置換え可能化~flag$ ~SET ~ON ]の下で行われることになる。 ◎ If the newly created browsing context is immediately navigated, then the navigation will be done with replacement enabled.

  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. ~IF[ %新 ~EQ ~T ]: ◎ If new is true, then:

    1. ~IF[ `~navi$sbox ~IN %~flag集合 ] ⇒ %結果 の`許可済み~navigator$ ~SET %現 ◎ Let flagSet be current's active document's active sandboxing flag set. ◎ If flagSet's sandboxed navigation browsing context flag is set, then current must be set as chosen's one permitted sandboxed navigator.
    2. ~IF[ `~sandboxは補助~閲覧文脈に伝播する~flag$ ~IN %~flag集合 ] ⇒ %結果 の`~popup~sandbox用~flag集合$に %~flag集合 内のすべての~flagを追加する ◎ If flagSet's sandbox propagates to auxiliary browsing contexts flag is set, then all the flags that are set in flagSet must be set in chosen's popup sandboxing flag set.
  12. ~RET ( %結果, %新 )

7.2. `Window^I, `WindowProxy^I, `Location^I ~objのための保安~基盤

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

7.3. `Window^I ~obj

[PrimaryGlobal, LegacyUnenumerableNamedProperties]
interface `Window@I : `EventTarget$I {
  /* 現在の閲覧文脈
◎
the current browsing context
 */
  [Unforgeable] readonly attribute `WindowProxy$I `window$m;
  [Replaceable] readonly attribute `WindowProxy$I `self$m;
  [Unforgeable] readonly attribute `Document$I `document$m;
  attribute DOMString `name$m; 
  [PutForwards=`href$m, Unforgeable] readonly attribute `Location$I `location$m;
  readonly attribute `History$I `history$m;
  readonly attribute `CustomElementRegistry$I `customElements$m;
  [Replaceable] readonly attribute `BarProp$I `locationbar$m;
  [Replaceable] readonly attribute `BarProp$I `menubar$m;
  [Replaceable] readonly attribute `BarProp$I `personalbar$m;
  [Replaceable] readonly attribute `BarProp$I `scrollbars$m;
  [Replaceable] readonly attribute `BarProp$I `statusbar$m;
  [Replaceable] readonly attribute `BarProp$I `toolbar$m;
  attribute DOMString `status$m;
  void `close$m();
  readonly attribute boolean `closed$m;
  void `stop$m();
  void `focus$m();
  void `blur$m();

  /* 他の閲覧文脈
◎
other browsing contexts
 */
  [Replaceable] readonly attribute `WindowProxy$I `frames$m;
  [Replaceable] readonly attribute unsigned long `~length0$m;
  [Unforgeable] readonly attribute `WindowProxy$I? `top$m;
  attribute any `opener$m;
  [Replaceable] readonly attribute `WindowProxy$I? `parent$m;
  readonly attribute `Element$I? `frameElement$m;
  `WindowProxy$I? `open$m(
      optional USVString %url = "about:blank",
      optional DOMString %target = "_blank",
      optional [TreatNullAs=EmptyString] DOMString %features = ""
  );
  `getter$m `object$I (DOMString %name);  /* これは大域~objなので、 IDL 有名~prop取得子は,~prototype-chain上に `NamedPropertiesObject^I ~exotic~objを追加する。
~~実際、これが大域~objを~exotic~objにすることはない。
~indexによる~accessは `WindowProxy$I ~exotic~objが引き受ける。
◎
Since this is the global object, the IDL named getter adds a NamedPropertiesObject exotic object on the prototype chain. Indeed, this does not make the global object an exotic object. Indexed access is taken care of by the WindowProxy exotic object.
 */

  /* ~UA
◎
the user agent
 */
  readonly attribute `Navigator$I `navigator$m; 
  readonly attribute `ApplicationCache$I `applicationCache$m;

  /* 利用者~向けの~prompt
◎
user prompts
 */
  void `alert$m();
  void `alert$m(DOMString %message);
  boolean `confirm$m(optional DOMString %message = "");
  DOMString? `prompt$m(
      optional DOMString %message = "",
      optional DOMString %default = ""
  );
  void `print$m();

  unsigned long `requestAnimationFrame$m(`FrameRequestCallback$I %callback);
  void `cancelAnimationFrame$m(unsigned long %handle);

  void `postMessage$m(
      any %message,
      USVString %targetOrigin,
      optional sequence<`object$I> %transfer =[]
  );
};
`Window$I implements `GlobalEventHandlers$I;
`Window$I implements `WindowEventHandlers$I;

callback `FrameRequestCallback@I = void (`DOMHighResTimeStamp$I %time);
%window . `window$m
%window . `frames$m
%window . `self$m
これらの属性はいずれも %window を返す。 ◎ These attributes all return window.
%window . `document$m
%window に`結付けられている文書$を返す。 ◎ Returns the Document associated with window.
%document . `defaultView$m
`作動中の文書$の `~window$ を返す。 ◎ Returns the Window object of the active document.

各`~window$には、`文書$が `結付けられる@doc 。 それは、`~window$の作成-時に初期 `about_blank$sc `文書$に設定され、`~navi$の間に限り,そこから変化する。 ◎ The Window has an associated Document, which is a Document object. It is set when the Window object is created, and only ever changed during navigation from the initial about:blank Document.

`~window$ %W に`結付けられている文書$が`属する閲覧文脈$を指して、単に, %W に `対応する閲覧文脈@ という — それは、 %W を包装している `WindowProxy$I ~objを結付けている`閲覧文脈$と言っても同じである。

【 この語は、簡便に記すため,この訳にて導入したもの。 】

`window@m
`frames@m
`self@m
これらの属性の取得子は、此れに`対応する閲覧文脈$の `WindowProxy$I ~objを返さ~MUST。 ◎ The window, frames, and self IDL attributes, on getting, must all return this Window object's browsing context's WindowProxy object.
`document@m
取得子は、此れに`結付けられている文書$を返さ~MUST。 ◎ The document IDL attribute, on getting, must return this Window object's associated Document.
注記: `~window$に`結付けられている文書$が変化し得る事例は、唯一,[ `~navigate$ ~algoが,`閲覧文脈$内に最初の頁を読込むために`新たな文書を初期化する$ ]ときに限られる。 その事例では、元の `about_blank$sc 頁の `~window$が再利用され,新たな`文書$を取得する。 ◎ The Document object associated with a Window object can change in exactly one case: when the navigate algorithm initializes a new Document object for the first page loaded in a browsing context. In that specific case, the Window object of the original about:blank page is reused and gets a new Document object.

`Document$I 上の `defaultView@m 取得子は、[ 此れが`属する閲覧文脈$ ~NEQ ε ならば その `WindowProxy$I ~obj / ~ELSE_ ~NULL ]を返さ~MUST。 ◎ The defaultView IDL attribute of the Document interface, on getting, must return this Document's browsing context's WindowProxy object, if this Document has an associated browsing context, or null otherwise.


歴史的~事由から、各`~window$は、次の特徴を備える~propを持た~MUST:

  • writable, configurable, 非 enumerable
  • 名前: `HTMLDocument@l
  • 値: `Document$I interface object
◎ For historical reasons, Window objects must also have a writable, configurable, non-enumerable property named HTMLDocument whose value is the Document interface object.

7.3.1. 閲覧文脈を名前で作成-/~navigateするための~API

%window = %window . `open$m( [ %url [, %target [, %features ] ] ] )
~windowを開いて %url (省略時は `about_blank$sc )を示した上で、それを返す。 %target 引数には,新たな~windowの名前を与える。 その名前の~windowがすでに存在する場合、それが再利用される。 %features 引数を利用すれば、新たな~windowの描画に波及させられる。 ◎ Opens a window to show url (defaults to about:blank), and returns it. The target argument gives the name of the new window. If a window exists with that name already, it is reused. The features argument can be used to influence the rendering of the new window.
%window . `name$m [ = %value ]
この~windowの名前を返す。 ◎ Returns the name of the window.
設定して,名前を変更できる。 ◎ Can be set, to change the name.
%window . `close$m()
この~windowを閉じる。 ◎ Closes the window.
%window . `closed$m
この~windowは[ すでに閉じられたなら ~T / ~ELSE_ ~F ]を返す。 ◎ Returns true if the window has been closed, false otherwise.
%window . `stop$m()
文書の読込を取消す。 ◎ Cancels the document load.

`~window~open手続き@ は、所与の ( 文字列 %url, 文字列 %target, 文字列 %features ) に対し,次を走らす: ◎ The window open steps, given a string url, a string target, and a string features, are as follows:

  1. %入口~設定群 ~LET `入口~設定群~obj$ ◎ Let entry settings be the entry settings object.
  2. %~source閲覧文脈 ~LET %入口~設定群 により指定される`担当の閲覧文脈$enV ◎ Let source browsing context be the responsible browsing context specified by entry settings.
  3. ~IF[ %target ~EQ 空~文字列 ] ⇒ %target ~SET `_blank^l ◎ If target is the empty string, then set target to "_blank".
  4. ( %~target閲覧文脈, %新 ) ~LET ( %target, %~source閲覧文脈 ) を与える下で,`閲覧文脈を選ぶ規則$を適用した結果 ] ◎ Let target browsing context and new be the result of applying the rules for choosing a browsing context given target and source browsing context.

    例えば~UAが、 control+~clickにより,~linkを新たな~tabに開くことを~supportしていて,利用者が要素に対し それを行ったとき、対する `onclick^m ~handlerは `iframe$e 内に頁を開くために `window.open()$m ~APIを利用していた場合、~UAは,~target閲覧文脈の選定を上書きして,新たな~tabを~targetにすることもできる。 ◎ If there is a user agent that supports control-clicking a link to open it in a new tab, and the user control-clicks on an element whose onclick handler uses the window.open() API to open a page in an iframe element, the user agent could override the selection of the target browsing context to instead target a new tab.

  5. ~IF[ %~target閲覧文脈 ~EQ ~NULL ] ⇒ ~RET ~NULL ◎ If target browsing context is null, then return null.
  6. %特色機能~map ~LET %features を`特色機能として~token化$した結果 ◎ Let tokenizedFeatures be the result of tokenizing features.
  7. %資源~URL ~LET "`about_blank$sc" ◎ Let resource be the URL "about:blank".
  8. ~IF[ %url ~NEQ 空~文字列 ]~OR[ %新 ~EQ ~T ]: ◎ If url is not the empty string or new is true, then:

    1. ~IF[ %url ~NEQ 空~文字列 ]:

      1. %資源~URL ~LET %url を %入口~設定群 に`相対的に構文解析-$した`結果の~URL~record$
      2. ~IF[ %資源~URL ~EQ ~error ] ⇒ ~THROW `SyntaxError$E
      ◎ If url is not the empty string, then parse url relative to entry settings, and set resource to the resulting URL record, if any. If the parse a URL algorithm failed, then throw a "SyntaxError" DOMException.
    2. ~IF[ %資源~URL ~EQ "`about_blank$sc" 同等? 】 ]~AND[ %新 ~EQ ~T ] ⇒ 次を走らす`~taskを待入する$ ⇒ %~target閲覧文脈 の`~window$に向けて,名前 `load$et の`~eventを発火する$ — [ `旧来の上書き~target~flag^V ~SET ~ON ]にした下で ◎ If resource is "about:blank" and new is true, then queue a task to fire an event named load at target browsing context's Window object, with the legacy target override flag set.
    3. ~ELSE ⇒ 次を与える下で, %~target閲覧文脈 を %資源~URL へ`~navigate$する(例外投出あり)

      • `例外~可能化~flag$ ~SET ~ON
      • `置換え可能化~flag$ ~SET [ %新 ~EQ ~T ならば ~ON / ~ELSE_ ~OFF ]
      • `~source閲覧文脈$ ~SET %~source閲覧文脈
      ◎ Otherwise, navigate target browsing context to resource, with the exceptions enabled flag set. If new is true, then replacement must be enabled. The source browsing context is source browsing context. Rethrow any exceptions.
  9. ~IF[ %特色機能~map[ `noopener^l ] ~NEQ ε ]:

    1. %~target閲覧文脈 の `opener$m ~SET ~NULL
    2. ~RET ~NULL
    ◎ If tokenizedFeatures contains an entry with the key "noopener", then disown target browsing context's opener and return null.
  10. ~RET %~target閲覧文脈 の `WindowProxy$I ~obj ◎ Return target browsing context's WindowProxy object.
`open(url, target, features)@m
この~methodは、[ 既存の`閲覧文脈$を`~navigate$する / `補助~閲覧文脈$を開いて~navigateする ]ための仕組みを提供する。 ◎ The open(url, target, features) method on Window objects provides a mechanism for navigating an existing browsing context or opening and navigating an auxiliary browsing context.
被呼出時には、 `~window~open手続き$( %url, %target, %features ) を走らせ~MUST。 ◎ When the method is invoked, the user agent must run the window open steps with url, target, and features.

%features 引数を `特色機能として~token化@ するときは、次を走らす: ◎ To tokenize the features argument:

  1. %特色機能~map ~LET 新たな`有順序~map$ ◎ Let tokenizedFeatures be a new ordered map.
  2. %位置 ~LET %features の最初の符号位置を指している`位置~変数$ ◎ Let position point at the first code point of features.
  3. ~WHILE[ %位置↗ ~NEQ ε ]: ◎ While position is not past the end of features:

    1. %名前 ~LET 空~文字列 ◎ Let name be the empty string.
    2. %値 ~LET 空~文字列 ◎ Let value be the empty string.
    3. %features 内の %位置 から,`特色機能~区切子$である`符号位置~並びを収集-$する — これは、特色機能~名より前に現れる区切子を読飛ばす ◎ Collect a sequence of code points that are feature separators from features given position. This skips past leading separators before the name.
    4. %名前 ~SET [[ %features 内の %位置 から,`特色機能~区切子$でない`符号位置~並びを収集-$した結果 ]を`~ASCII小文字~化$した結果 ]を`特色機能~名として正規化-$した結果 ◎ Collect a sequence of code points that are not feature separators from features given position. Set name to the collected characters, converted to ASCII lowercase. ◎ Set name to the result of normalizing the feature name name.
    5. ~WHILE[ %位置↗ ~NIN { ε, `003D^U `=^smb } ] ◎ While position is not past the end of features and the code point at position in features is not U+003D (=):

      1. ~IF[ %位置↗ ~EQ `002C^U `,^smb ]~OR[ %位置↗ ~NIN { `特色機能~区切子$ } ] ⇒ ~BREAK ◎ If the code point at position in features is U+002C (,), or if it is not a feature separator, then break.
      2. %位置 ~INCBY 1 ◎ Advance position by 1.

      注記: これは、最初の `003D^U `=^smb まで, かつ[ `002C^U `,^smb / 非~区切子 ]を過ぎない所まで読飛ばす ◎ This skips to the first U+003D (=) but does not skip past a U+002C (,) or a non-separator.

    6. ~IF[ %位置↗ ~IN { `特色機能~区切子$ } ]: ◎ If the code point at position in features is a feature separator:

      1. ~WHILE[ %位置 ~IN { `特色機能~区切子$ } ]: ◎ While position is not past the end of features and the code point at position in features is a feature separator:

        1. ~IF[ %位置↗ ~EQ `002C^U `,^smb ] ⇒ ~BREAK ◎ If the code point at position in features is U+002C (,), then break.
        2. %位置 ~INCBY 1 ◎ Advance position by 1.

        注記: これは、最初の非~区切子まで, かつ `002C^U `,^smb を過ぎない所まで読飛ばす ◎ This skips to the first non-separator but does not skip past a U+002C (,).

      2. %値 ~SET [ %features 内の %位置 から,`特色機能~区切子$でない`符号位置~並びを収集-$した結果 ]を`~ASCII小文字~化$した結果 ◎ Collect a sequence of code points that are not feature separators code points from features given position. Set value to the collected code points, converted to ASCII lowercase.
    7. ~IF[ %名前 ~NEQ 空~文字列 ] ⇒ %特色機能~map[ %名前 ] ~SET %値 ◎ If name is not the empty string, then set tokenizedFeatures[name] to value.
  4. ~RET %特色機能~map ◎ Return tokenizedFeatures.

次に挙げる符号位置は、 `特色機能~区切子@ とされる ⇒ `~ASCII空白$, `003D^U `=^smb, `002C^U `,^smb ◎ A code point is a feature separator if it is ASCII whitespace, U+003D (=), or U+002C (,).

旧来の理由から、一部の特色機能~名には別名がある。 所与の %名前 を `特色機能~名として正規化-@ するときは、 %名前 に応じて,次の表の 2 列目に与える結果を返す: ◎ For legacy reasons, there are some aliases of some feature names. To normalize a feature name name, switch on name:

%名前 結果
`screenx^l `left^l
`screeny^l `top^l
`innerwidth^l `width^l
`innerheight^l `height^l
その他 %名前
◎ "screenx" Return "left". "screeny" Return "top". "innerwidth" Return "width". "innerheight" Return "height". Anything else Return name.
`name@m
取得子は、`閲覧文脈$の現在の`名前$を返さ~MUST。 設定子は、`閲覧文脈$の`名前$を新たな値に設定し~MUST。 ◎ The name attribute of the Window object must, on getting, return the current name of the browsing context; and, on setting, set the name of the browsing context to the new value.
注記: `名前$は、閲覧文脈が別の`生成元$へ`~navigate$されたときは, 再設定される 。 ◎ The name gets reset when the browsing context is navigated to another origin.
`close()@m

被呼出時には、次の条件がいずれも満たされるならば,`閲覧文脈$ %B を`閉じる$べきである: ◎ The close() method on Window objects should, if all the following conditions are met, close the browsing context A:

  • %B は`~scriptから閉じれる$。 ◎ The corresponding browsing context A is script-closable.
  • `現任の設定群~obj$により指定される`担当の閲覧文脈$enVを %B1 とするとき:

    • %B1 は %B に`近しい$, かつ
    • %B1 は %B に対する`~navigateが許容され$ている
    ◎ The responsible browsing context specified by the incumbent settings object is familiar with the browsing context A. ◎ The responsible browsing context specified by the incumbent settings object is allowed to navigate the browsing context A.

次のいずれかを満たす`閲覧文脈$ %B は、 `~scriptから閉じれる@ とされる:

  • %B は、~scriptが作成した`補助~閲覧文脈$である(利用者による動作ではなく)
  • %B は`~top-level閲覧文脈$である ~AND %B の`~session履歴$に含まれる`文書$は 1 つだけである
◎ A browsing context is script-closable if it is an auxiliary browsing context that was created by a script (as opposed to by an action of the user), or if it is a top-level browsing context whose session history contains only one Document.
`closed@m
取得子は、[ `閲覧文脈$はすでに`破棄-$されたならば ~T / ~ELSE_ ~F ]を返さ~MUST。 ◎ The closed attribute on Window objects must return true if the Window object's browsing context has been discarded, and false otherwise.
`stop()@m

被呼出時には、次の手続きを走らせる~SHOULDである:

  1. ~IF[ `閲覧文脈$を`~navigate$しようとする既存の試みがある ]~AND[ その試みは`文書を~unload$する~algoを現在~走らせていない ] ⇒ 此れの`閲覧文脈$にて`作動中の文書$を`中止-$して、その`~navi$を取消す
◎ The stop() method on Window objects should, if there is an existing attempt to navigate the browsing context and that attempt is not currently running the unload a document algorithm, cancel that navigation; then, it must abort the active document of the browsing context of the Window object on which it was invoked.

7.3.2. 他の閲覧文脈への~access法

%window . `~length0$m
`文書~木に属する子~閲覧文脈$の個数を返す。 ◎ Returns the number of document-tree child browsing contexts.
%window[%index]
`文書~木に属する子~閲覧文脈$のうち, %index で指示されるものを返す。 ◎ Returns the indicated document-tree child browsing context.
`~length0@m
取得子は、此れに`結付けられている文書$が`属する閲覧文脈$の`文書~木に属する子~閲覧文脈$たちの個数を返さ~MUST ◎ The number of document-tree child browsing contexts of a Window object W is the number of document-tree child browsing contexts of W's associated Document's browsing context. ◎ The length IDL attribute's getter must return the number of document-tree child browsing contexts of this Window object.

注記: ~indexによる`文書~木に属する子~閲覧文脈$への~accessは、 `WindowProxy$I ~objの `GetOwnProperty$sl 内部~methodを通して定義される ◎ Indexed access to document-tree child browsing contexts is defined through the [[GetOwnProperty]] internal method of the WindowProxy object.

7.3.3. `Window^I ~objに対する名前による~access

%window[%name]
指示された要素(たち)の~collectionを返す。 ◎ Returns the indicated element or collection of elements.
一般に、これに依拠すると,~codeは壊れやすくなる。 例えば、~Web~platformに新たな特色機能が追加されるに伴い,どの ID がこの~APIに対応付けられるかは時を経るに伴い変わり得るので。 代わりに, `document.getElementById()^m / `document.querySelector()^m を利用すること。 ◎ As a general rule, relying on this will lead to brittle code. Which IDs end up mapping to this API can vary over time, as new features are added to the Web platform, for example. Instead of this, use document.getElementById() or document.querySelector().

`~window$ %W の `文書~木に属する子~閲覧文脈~名~prop集合@ は、次の手続きの結果で与えられる: ◎ The document-tree child browsing context name property set of a Window object window is the return value of running these steps:

  1. %名前~list ~LET 空~list ◎ ↓
  2. %文書 ~LET %W に`対応する閲覧文脈$にて`作動中の文書$ ◎ Let activeDocument be window's browsing context's active document.
  3. %子~閲覧文脈~list ~LET %文書 が`属する閲覧文脈$の`文書~木に属する子~閲覧文脈$たちからなる~list ◎ ↓
  4. %子~閲覧文脈~list 内の ~EACH ( %B ) に対し:

    1. %名前 ~LET %B の`閲覧文脈~名$
    2. ~IF[ %名前 ~EQ 空~文字列 ] ⇒ ~CONTINUE
    3. %子~閲覧文脈~list から, %B 以外の[ `閲覧文脈~名$ ~EQ %名前 ]なる`閲覧文脈$すべてを除去する (除去されたものに対する反復は飛ばすことになる)
    4. ~IF[ %名前 ~NEQ %B の`閲覧文脈~容器$の `name^a 内容~属性~値 ]~AND[ %B にて`作動中の文書$の`生成元$ ~NEQ`生成元$sub %文書 の`生成元$ ] ⇒ ~CONTINUE
    5. %名前~list に %名前 を付加する
    ◎ Let childBrowsingContexts be all document-tree child browsing contexts of activeDocument's browsing context whose browsing context name is not the empty string, in order, and including only the first document-tree child browsing context with a given name if multiple document-tree child browsing contexts have the same one. ◎ Remove each browsing context from childBrowsingContexts whose active document's origin is not same origin with activeDocument's origin and whose browsing context name does not match the name of its browsing context container's name content attribute value.
  5. ~RET %名前~list ◎ Return the browsing context names of childBrowsingContexts, in the same order.

例えば次の頁が `https://example.org/^c にて~hostされていて, `https://elsewhere.example/^c の `iframe^e の `name$m が `spices^l に設定されたとするとき、すべてが読込まれた後に `window.spices^c を評価した結果は undefined になる: ◎ This means that in the following example, hosted on https://example.org/, assuming https://elsewhere.example/ sets window.name to "spices", evaluating window.spices after everything has loaded will yield undefined:

<iframe src=https://elsewhere.example.com/></iframe>
<iframe name=spices></iframe>

各`~window$は、`有名~propを~supportする$。 所与の任意の時点における`~window$ %W の`被support~prop名$は、次のものからなる: ◎ The Window object supports named properties. The supported property names of a Window object window at any moment consist of the following, in tree order according to the element that contributed them, ignoring later duplicates:

  • %W の`文書~木に属する子~閲覧文脈~名~prop集合$ ◎ window's document-tree child browsing context name property set;
  • [ %W に`対応する閲覧文脈$にて`作動中の文書$ ]内の`有名~要素$ — `要素~名$が同じものが複数あるときは、`木~順序$で最初のもの以外は無視する。 ◎ the value of the name content attribute for all applet, embed, form, frameset, img, and object elements that have a non-empty name content attribute and are in a document tree with window's browsing context's active document as their root; and ◎ the value of the id content attribute for all HTML elements that have a non-empty id content attribute and are in a document tree with window's browsing context's active document as their root.

`~window$ %W において,所与の %名前 に対し`有名~propの値を決定する$ときは、次の手続きの結果を返さ~MUST: ◎ To determine the value of a named property name in a Window, the user agent must return the value obtained using the following steps:

  1. ~Assert: %名前 は %W の`被support~prop名$である `この段は、この訳による補完。^tnote
  2. %~obj~list ~LET %W に`対応する閲覧文脈$にて`作動中の文書$内の[ 名前 %名前 の`有名~obj$ ]からなる~list ◎ Let objects be the list of named objects with the name name in the active document.

    注記: 定義により、 %~obj~list は空でない。 ◎ There will be at least one such object, by definition.

  3. ~IF[ %~obj~list 内に`入子の閲覧文脈$はある ] ⇒ ~RET[ それらのうち,`閲覧文脈~容器$の`木~順序$で最初のもの ]の `WindowProxy$I ~obj ◎ If objects contains a nested browsing context, then return the WindowProxy object of the nested browsing context corresponding to the first browsing context container in tree order whose nested browsing context is in objects, and abort these steps.
  4. ~IF[ %~obj~list 内の要素~数 ~EQ 1 ] ⇒ ~RET その要素 ◎ Otherwise, if objects has only one element, return that element and abort these steps.
  5. ~RET 次のようにされた `HTMLCollection$I ⇒ 根: `Document$I ~node;
    ~filter: 名前 %名前 の`有名~obj$のみに合致する(定義により,これらはすべて要素になる) ◎ Otherwise return an HTMLCollection rooted at the Document node, whose filter matches only named objects with the name name. (By definition, these will all be elements.)

この節の目的0における,`文書$ %文書 内の[ 名前 %名前 の `有名~obj@ ]は、次に挙げるものからなる: ◎ Named objects with the name name, for the purposes of the above algorithm, consist of the following:

  • %文書 が`属する閲覧文脈$の`文書~木に属する子~閲覧文脈$のうち,[ その`閲覧文脈~名$ ~EQ %名前 ]なるもの ◎ document-tree child browsing contexts of the active document whose name is name;
  • %文書 内の`有名~要素$のうち,[ その`要素~名$ ~EQ %名前 ]なるもの

所与の`文書$ %文書 内の `有名~要素@, およびその `要素~名@ は、次で与えられる:

  • %文書 を`根$とする`文書~木~内$にある[ `applet$e, `embed$e, `form$e, `frameset$e, `img$e, `object$e ]要素のうち,[ `name^a 内容~属性を有する ]~AND[ その属性~値 ~NEQ 空~文字列 ]なるもの — その属性~値が`要素~名$を与える ◎ a, applet, area, embed, form, frameset, img, or object elements that have a name content attribute whose value is name and are in a document tree with the active document as their root; and
  • %文書 を`根$とする`文書~木~内$にある`~HTML要素$のうち,[ `id$a 内容~属性を有する ]~AND[ その属性~値 ~NEQ 空~文字列 ]なるもの — その属性~値が`要素~名$を与える ◎ HTML elements that have an id content attribute whose value is name and are in a document tree with the active document as their root.

【 `有名~要素$, `要素~名$は、記述を論理的に集約するためにこの訳に導入した用語である。 】

7.3.4. ~garbage収集と閲覧文脈

~UAは、自身の`~top-level閲覧文脈$たちへの強い参照を持つ。 ◎ ↓

各 `閲覧文脈$は、[ それに属する各`文書$, および その `WindowProxy$I ~obj ]への強い参照を持つ。 ◎ A browsing context has a strong reference to each of its Documents and its WindowProxy object, and the user agent itself has a strong reference to its top-level browsing contexts.

各`文書$は、自身の`~window$への強い参照を持つ。 ◎ A Document has a strong reference to its Window object.

注記: `~window$は、その `document$m 属性を通して,それに`結付けられている文書$への`強い参照$を持つ。 したがって、他の~scriptからの,それらいずれかの~objへの参照は、両者とも存続させ続けることになる。 同様に、[ `文書$, `~window$ ]のいずれも, `WindowProxy$I ~objへの暗黙の`強い参照$を持つ。 ◎ A Window object has a strong reference to its Document object through its document attribute. Thus, references from other scripts to either of those objects will keep both alive. Similarly, both Document and Window objects have implied strong references to the WindowProxy object.

各`~script$は、自身の`設定群~obj$への強い参照を持つ。 各 `環境~設定群~obj$は、自身の[ `大域~obj$, `担当の閲覧文脈$enV, `担当の文書$enV ]への強い参照を持つ(もしあれば)。 ◎ Each script has a strong reference to its settings object, and each environment settings object has strong references to its global object, responsible browsing context, and responsible document (if any).

`閲覧文脈$ %B に`属する文書$ %文書 を `破棄-@doc するときは、~UAは,次の手続きを走らせ~MUST: ◎ When a browsing context is to discard a Document, the user agent must run the following steps:

  1. %文書 の`回復可能~状態$ ~SET ~F ◎ Set the Document's salvageable state to false.
  2. この仕様も含む`適用し得る仕様$に定義される, %文書 に対する`文書~unload時の片付け手続き$があれば、それを走らす ◎ Run any unloading document cleanup steps for the Document that are defined by this specification and other applicable specifications.
  3. %文書 を`中止する$ ◎ Abort the Document.
  4. 待入された`~task$のうち,[ それに結付けられている`文書$ ~EQ %文書 ]なるものは、どの`~task源$からの~taskであれ,走らすことなく除去する ◎ Remove any tasks associated with the Document in any task source, without running those tasks.
  5. %文書 を`通して入子にされ$ている`子~閲覧文脈$は、すべて`破棄-$する ◎ Discard all the child browsing contexts of the Document.
  6. %B から %文書 への強い参照を切り離す ◎ Lose the strong reference from the Document's browsing context to the Document.

注記: %文書 が`破棄-$docされたときは、それを包含している,各~worker~objの`所有者~集合$からも除去される。 ◎ Whenever a Document object is discarded, it is also removed from the owner set of each worker whose set contains that Document.

閲覧文脈 %B を `破棄-@ するときは、次を行わ~MUST:

  • ~UA自身から %B への強い参照を切る。
  • %B の~session履歴~内のすべての~entryに対するすべての`文書$を`破棄-$docする。
◎ When a browsing context is discarded, the strong reference from the user agent itself to the browsing context must be severed, and all the Document objects for all the entries in the browsing context's session history must be discarded as well.

~UAは:

  • `~top-level閲覧文脈$をいつでも`破棄-$してよい(概して,利用者からの要請に呼応して — 例えば、利用者が,`~top-level閲覧文脈$たちを包含している~window~UIを強制的に閉じたとき)。
  • 他の`閲覧文脈$に対しては、次のときには破棄し~MUST:

    • その`WindowProxy$I ~objが~garbage収集に適格になったとき
    • この仕様が他所にて破棄するよう要求する所
◎ User agents may discard top-level browsing contexts at any time (typically, in response to user requests, e.g. when a user force-closes a window containing one or more top-level browsing contexts). Other browsing contexts must be discarded once their WindowProxy object is eligible for garbage collection, in addition to the other places where this specification requires them to be discarded.

`WindowProxy$I ~obj %P は、 %P を伴って作成された`閲覧文脈$への強い参照は持たない。 特に、~JS~codeが %P への参照を保持していても,`入子の閲覧文脈$は`破棄-$され得る。 ◎ A WindowProxy does not have a strong reference to the browsing context it was created alongside. In particular, it is possible for a nested browsing context to be discarded even if JavaScript code holds a reference to its WindowProxy object.

7.3.5. 閲覧文脈を閉じるとき

`閲覧文脈$ %B を `閉じる@ ときは、次を走らす: ◎ To close a browsing context browsingContext, run these steps:

  1. %文書 ~LET %B にて`作動中の文書$ ◎ ↓
  2. %文書 の`~unloadを~prompt$する ⇒ ~IF[ 利用者は %文書 の`~unloadを拒否-$した ] ⇒ ~RET ◎ Prompt to unload browsingContext's active document. If the user refused to allow the document to be unloaded, then return.
  3. [ %recycle ~SET ~F ]の下で, %文書 を`~unload$する ◎ Unload browsingContext's active document with the recycle parameter set to false.
  4. ~UIから %B を除去する (例: ~tab付き~browserにて当の~tabを閉じる/隠すなど。) ◎ Remove browsingContext from the user interface (e.g., close or hide its tab in a tabbed browser).
  5. %B を`破棄-$する ◎ Discard browsingContext.

~UAは、どの`~top-level閲覧文脈$に対しても,利用者が任意に`閉じる$能を提供0するべきである。 ◎ User agents should offer users the ability to arbitrarily close any top-level browsing context.

7.3.6. ~browser~UI要素

~Web頁を~Web~browserに統合できるようにするため、ある種の~Web~browser~UI要素は,~Web頁~内の~scriptに対し制限された仕方で公開される。 ◎ To allow Web pages to integrate with Web browsers, certain Web browser interface elements are exposed in a limited way to scripts in Web pages.

各~UI要素は、 `BarProp$I ~objにより表現される: ◎ Each interface element is represented by a BarProp object:

interface `BarProp@I {
  readonly attribute boolean `visible$m;
};
%window . `locationbar$m . `visible$m
%window . `menubar$m . `visible$m
%window . `personalbar$m . `visible$m
%window . `scrollbars$m . `visible$m
%window . `statusbar$m . `visible$m
%window . `toolbar$m . `visible$m
順に,[ location-, menu-, personal-, scroll-, status-, tool- ]bar が[ 可視ならば ~T / 可視でないならば ~F ]を返す。
◎ window . locationbar . visible • Returns true if the location bar is visible; otherwise, returns false. window . menubar . visible • Returns true if the menu bar is visible; otherwise, returns false. window . personalbar . visible • Returns true if the personal bar is visible; otherwise, returns false. window . scrollbars . visible • Returns true if the scroll bars are visible; otherwise, returns false. window . statusbar . visible • Returns true if the status bar is visible; otherwise, returns false. window . toolbar . visible • Returns true if the toolbar is visible; otherwise, returns false.
`visible@m
取得子は、 ~T または,下に述べるように,当の~objが表現する~UI要素の可視性~状態を最も正確0に表現するような,~UAにより決定される値を返さ~MUST。 ◎ The visible attribute, on getting, must return either true or a value determined by the user agent to most accurately represent the visibility state of the user interface element that the object represents, as described below.

以下に挙げる各種 `BarProp$I ~objは、`閲覧文脈$に属する各`文書$に存在する。 これらの~objにより表現される~UI要素のうち一部は、~UAによっては等価なものがないこともある。 そのような~UAであっても、他から指定されない限り,~objは在するかつ可視であるかのように動作し~MUST(すなわち,その `visible$m 属性は ~T を返さ~MUST)。 ◎ The following BarProp objects exist for each Document object in a browsing context. Some of the user interface elements represented by these objects might have no equivalent in some user agents; for those user agents, except when otherwise specified, the object must act as if it was present and visible (i.e. its visible attribute must return true).

`~location-bar@bP ◎ The location bar BarProp object
[ `作動中の文書$の`~URL$を表示する~control ]を包含するような~UI要素に類するものを表現する。 ◎ Represents the user interface element that contains a control that displays the URL of the active document, or some similar interface concept.
`~menu-bar@bP ◎ The menu bar BarProp object
[ ~menu~form内の~commandの~list ]を包含するような~UI要素に類するものを表現する。 ◎ Represents the user interface element that contains a list of commands in menu form, or some similar interface concept.
`~personal-bar@bP ◎ The personal bar BarProp object
[ 利用者の “お気に入り( favorite )” 頁を指す~link ]を包含するような~UI要素に類するものを表現する。 ◎ Represents the user interface element that contains links to the user's favorite pages, or some similar interface concept.
`~scrollbar@bP ◎ The scrollbar BarProp object
[ ~scrollするための仕組み ]を包含するような~UI要素に類するものを表現する。 ◎ Represents the user interface element that contains a scrolling mechanism, or some similar interface concept.
`~status-bar@bP ◎ The status bar BarProp object
利用者の媒体に応じて適切に,文書の直上/直下に見出される~UI要素を表現する。 それは概して,[ 進行中の~network活動や, 利用者の~pointing装置が現在の指示している要素 ]についての情報を提供する。 そのような~UI要素を持たない~UAは、~objに対応する~UI要素は不在であったかのように動作してよい(すなわち,その `visible$m 属性は ~F を返してよい)。 ◎ Represents a user interface element found immediately below or after the document, as appropriate for the user's media, which typically provides information about ongoing network activity or information about elements that the user's pointing device is current indicating. If the user agent has no such user interface element, then the object may act as if the corresponding user interface element was absent (i.e. its visible attribute may return false).
`~toolbar@bP ◎ The toolbar BarProp object
利用者の媒体に応じて適切に,文書の直上/直下に見出される~UI要素を表現する。 それは概して,`~session履歴$の走査~control(戻る/進む~button, 再読込み~button, 等々)を提供する。 そのような~UI要素を持たない~UAは、~objに対応する~UI要素は不在であったかのように動作してよい(すなわち,その `visible$m 属性は ~F を返してよい)。 ◎ Represents the user interface element found immediately above or before the document, as appropriate for the user's media, which typically provides session history traversal controls (back and forward buttons, reload buttons, etc). If the user agent has no such user interface element, then the object may act as if the corresponding user interface element was absent (i.e. its visible attribute may return false).
`locationbar@m
取得子は、`~location-bar$bPを返さ~MUST。 ◎ The locationbar attribute must return the location bar BarProp object.
`menubar@m
取得子は、`~menu-bar$bPを返さ~MUST。 ◎ The menubar attribute must return the menu bar BarProp object.
`personalbar@m
取得子は、`~personal-bar$bPを返さ~MUST。 ◎ The personalbar attribute must return the personal bar BarProp object.
`scrollbars@m
取得子は、`~scrollbar$bPを返さ~MUST。 ◎ The scrollbars attribute must return the scrollbar BarProp object.
`statusbar@m
取得子は、`~status-bar$bPを返さ~MUST。 ◎ The statusbar attribute must return the status bar BarProp object.
`toolbar@m
取得子は、`~toolbar$bPを返さ~MUST。 ◎ The toolbar attribute must return the toolbar BarProp object.
`status@m
この属性は、歴史的~理由から存在する。 取得子は、最後に設定された文字列を返さ~MUST。 設定子は、自身を新たな値に設定し~MUST。 `~window$の作成-時には、属性は空~文字列に設定され~MUST。 この属性は、他に何もしない。 ◎ For historical reasons, the status attribute on the Window object must, on getting, return the last string it was set to, and on setting, must set itself to the new value. When the Window object is created, the attribute must be set to the empty string. It does not do anything else.

7.3.7. `Window^I ~obj用の~script設定群

~UAは, `~window用に環境~設定群~objを設定して@ おくことが要求されたときは、所与の ( `~JS実行~文脈$ %実行~文脈, `環境$ `予約済み環境^V (省略時は ε ) ) に対し,次を走らせ~MUST: ◎ When the user agent is required to set up a window environment settings object, given a JavaScript execution context execution context and an optional environment reserved environment, it must run the following steps:

  1. %realm ~LET %実行~文脈 の Realm 成分の値 ◎ Let realm be the value of execution context's Realm component.
  2. %window ~LET %realm の`大域~obj$relem ◎ Let window be realm's global object.
  3. %url ~LET %window に`結付けられている文書$の`~URL$docの複製 ◎ Let url be a copy of the URL of window's associated Document.
  4. %設定群~obj ~LET 各種~algoが次のように定義される,新たな`環境~設定群~obj$ — 以下における %現~文書 とは、~algoが呼出された時点で %window に`結付けられている文書$を表すとする: ◎ Let settings object be a new environment settings object whose algorithms are defined as follows:

    `~realm実行~文脈$enV ◎ The realm execution context
    ~RET %実行~文脈 ◎ Return execution context.
    `~module~map$enV ◎ The module map
    ~RET %現~文書 の`~module~map$doc ◎ Return the module map of window's associated Document.
    `担当の閲覧文脈$enV ◎ The responsible browsing context
    ~RET %window に`対応する閲覧文脈$ ◎ Return the browsing context with which window is associated.
    `担当の~event-loop$enV ◎ The responsible event loop
    ~RET `担当の閲覧文脈$enVが所属している[ `互いに関係するかつ生成元も類似する閲覧文脈~群$ ]に結付けられている`~event-loop$ ◎ Return the event loop that is associated with the unit of related similar-origin browsing contexts to which window's browsing context belongs.
    `担当の文書$enV ◎ The responsible document
    ~RET %現~文書 ◎ Return window's associated Document.
    `~API~URL文字~符号化方式$enV ◎ The API URL character encoding
    ~RET %現~文書 の現在の`文字~符号化方式$doc ◎ Return the current character encoding of window's associated Document.
    `~API基底~URL$enV ◎ The API base URL
    ~RET %現~文書 の現在の`基底~URL$doc ◎ Return the current base URL of window's associated Document.
    `生成元$enV ◎ The origin
    ~RET %現~文書 の`生成元$ ◎ Return the origin of window's associated Document.
    `~HTTPS状態$enV ◎ The HTTPS state
    ~RET %現~文書 の`~HTTPS状態$doc ◎ Return the HTTPS state of window's associated Document.
    `~referrer施策$enV ◎ The referrer policy
    1. %文書 ~LET %現~文書 ◎ Let document be the Document with which window is currently associated.
    2. ~WHILE[ %文書 は`~iframe~srcdoc文書$である ]~AND[ %文書 の`~referrer施策$doc ~EQ 空~文字列 ] ⇒ %文書 ~SET %文書 が`属する閲覧文脈$の`閲覧文脈~容器$の`~node文書$ ◎ While document is an iframe srcdoc document and document's referrer policy is the empty string, set document to document's browsing context's browsing context container's node document.
    3. ~RET %文書 の`~referrer施策$doc ◎ Return document's referrer policy.
  5. ~IF[ `予約済み環境^V ~NEQ ε ]: ◎ If reserved environment is given, then:

    1. %設定群~obj の ( `~id$enV, `作成時の~URL$enV, `~target閲覧文脈$enV, `作動中の~service-worker$enV ) ~SET `予約済み環境^V の ( それら ) ◎ Set settings object's id to reserved environment's id, settings object's creation URL to reserved environment's creation URL, settings object's target browsing context to reserved environment's target browsing context, and settings object's active service worker to reserved environment's active service worker.
    2. `予約済み環境^V の`~id$enV ~SET 空~文字列 ◎ Set reserved environment's id to the empty string.

      注記: この時点から、 `予約済み環境^V の~id( identity )は %設定群~obj に全部的に転送されたものと見なされ、`環境$の`~id$enVにより探索し得なくなる。 ◎ The identity of the reserved environment is considered to be fully transferred to the created environment settings object. The reserved environment is not searchable by the environment’s id from this point on.

  6. ~ELSE ⇒ %設定群~obj の ( `~id$enV, `作成時の~URL$enV, `~target閲覧文脈$enV, `作動中の~service-worker$enV ) ~SET ( 新たな一意かつ不透明な文字列, %~url, ~NULL, ~NULL ) ◎ Otherwise, set settings object's id to a new unique opaque string, settings object's creation URL to url, settings object's target browsing context to null, and settings object's active service worker to null.
  7. %realm の `HostDefined^sl ~field ~SET %設定群~obj ◎ Set realm's [[HostDefined]] field to settings object.
  8. ~RET %設定群~obj ◎ Return settings object.

7.4. `WindowProxy^I ~exotic~obj

各 `閲覧文脈$ %B には、 `WindowProxy@I ~obj %P が結付けられる。 それは、普通の~objである `Window$I ~obj %W を,次のように包装する~exotic~objである:

  • %P 上のほとんどの演算は、 %W へ指し向けられる。
  • %B が`~navigate$されたときは、 %W も別の `Window$I ~objに変更される。
  • %P の `Window$sl 内部~slotが, %W を表現する。
  • %P に対応する`~interface~obj$はない。

【 以下,この節と その各 下位節の内容は、 別ページ にて。 上述は、便宜のため,その冒頭部のみを再掲したものである。 】

7.5. 生成元

生成元は ~Webの保安~modelにおける基礎的な通貨である。 ~Web~platformにおける,ある生成元を共有する動作者たちは、互いを信用し,同じ権限を有するものと見做される。 互いの生成元が相違する動作者たちは、潜在的に敵対的にあると見なされ,様々な程度で互いに隔離される。 ◎ Origins are the fundamental currency of the Web's security model. Two actors in the Web platform that share an origin are assumed to trust each other and to have the same authority. Actors with differing origins are considered potentially hostile versus each other, and are isolated from each other to varying degrees.

例えば `bank.example.com^c にて~hostされている X 銀行の ~Web~siteが `charity.example.org^c にて~hostされている Y 事業体の~Web~siteの~DOMを調べようと試行した場合、 `SecurityError$E 例外が~~投出されることになる。 ◎ For example, if Example Bank's Web site, hosted at bank.example.com, tries to examine the DOM of Example Charity's Web site, hosted at charity.example.org, a "SecurityError" DOMException will be raised.


`生成元@ は、次のいずれかとして与えられる: ◎ An origin is one of the following:

`不透明な生成元@
直列化して再度~作成し直せないような(`生成元の直列化$においては `null^l に直列化される),内部的な値であって、有意義な演算は,同等性を試験することに限られる。 ◎ An internal value, with no serialization it can be recreated from (it is serialized as "null" per serialization of an origin), for which the only meaningful operation is testing for equality.
`成分組~生成元@

次のものからなる: ◎ A tuple consists of:

  • `~scheme@( `~scheme$url ) ◎ A scheme (a scheme).
  • `~host@ ( `~host$url ) ◎ A host (a host).
  • `~port@ ( `~port$url ) ◎ A port (a port).
  • `~domain@ ( ~NULL または `~domain$url )。 他が定められない限り, ~NULL 。 ◎ A domain (null or a domain). Null unless stated otherwise.

注記: `生成元$は共有され得る — 例えば、複数の`文書$間で。 加えて、`生成元$は,一般に変異しない。 `成分組~生成元$の`~domain$のみ,それも `document.domain$m ~APIを通してのみ,変更され得る。 ◎ Origins can be shared, e.g., among multiple Document objects. Furthermore, origins are generally immutable. Only the domain of a tuple origin can be changed, and only through the document.domain API.

`生成元$ %生成元 の `実効~domain@ は、次に従って計算される: ◎ The effective domain of an origin origin is computed as follows:

  1. ~IF[ %生成元 は`不透明な生成元$である ] ⇒ ~RET ~NULL ◎ If origin is an opaque origin, then return null.
  2. ~IF[ %生成元 の`~domain$ ~NEQ ~NULL ] ⇒ ~RET %生成元 の`~domain$ ◎ If origin's domain is non-null, then return origin's domain.
  3. ~RET %生成元 の`~host$ ◎ Return origin's host.

仕様が定義する様々な~objは,`生成元$を有するように定義される。 これらの`生成元$は、次のうち,最初に該当する項目に従って決定される: ◎ Various specification objects are defined to have an origin. These origins are determined as follows:

`文書$ %文書 に対しては:◎For Document objects
`生成元$sbox ~IN %文書 の`作動中の~sandbox用~flag集合$の場合: ◎ If the Document's active sandboxing flag set has its sandboxed origin browsing context flag set
%文書 は `data_$sc ~URLから生成されたものである場合: ◎ If the Document was generated from a data: URL
%文書 の作成-時にあてがわれた,一意かつ`不透明な生成元$。 ◎ A unique opaque origin assigned when the Document is created.
%文書 の`~URL$docの`~scheme$urlは`~network~scheme$である場合: ◎ If the Document's URL's scheme is a network scheme
%文書 の作成-時にあてがわれた, %文書 の`~URL$docの`生成元$urlの複製 ◎ A copy of the Document's URL's origin assigned when the Document is created.
注記: `document.open()$m ~methodは、 %文書 の`~URL$docを `about_blank$sc に変更し得る。 したがって、`生成元$は作成-時にあてがわれる。 ◎ The document.open() method can change the Document's URL to "about:blank". Therefore the origin is assigned when the Document is created.
%文書 は初期 "`about_blank$sc" 文書である場合: ◎ If the Document is the initial "about:blank" document
%文書 が`属する閲覧文脈$の 作成-時にあてがわれたもの。 ◎ The one it was assigned when its browsing context was created.
%文書 は 初期でない "`about_blank$sc" 文書である場合: ◎ If the Document is a non-initial "about:blank" document

`~script$が孕まれるかどうかに応じて:

孕まれる場合:
`~navigate$~algoが呼出された時点での`現任の設定群~obj$の`生成元$enV
孕まれない場合:
当の`~URL$への`~navi$を起動させた要素の`~node文書$の`生成元$
◎ The origin of the incumbent settings object when the navigate algorithm was invoked, or, if no script was involved, the origin of the node document of the element that initiated the navigation to that URL.
%文書 は `javascript_$sc ~URLの処理の一部として作成されたものである場合: ◎ If the Document was created as part of the processing for javascript: URLs
~navigateされている`閲覧文脈$の[ `~navigate$~algoが呼出された時点で`作動中の文書$ ]の`生成元$ ◎ The origin of the active document of the browsing context being navigated when the navigate algorithm was invoked.
%文書 は `~iframe~srcdoc文書$である場合: ◎ If the Document is an iframe srcdoc document
[[[ %文書 が`属する閲覧文脈$ ]の`閲覧文脈~容器$ ]の`~node文書$ ]の`生成元$ ◎ The origin of the Document's browsing context's browsing context container's node document.
%文書 は 何らかの他の方式で得られたものである場合: ◎ If the Document was obtained in some other manner (e.g. a Document created using the createDocument() API, etc)
WHATWG `DOM$r 標準に定義される既定の挙動が適用される。 ◎ The default behavior as defined in the WHATWG DOM standard applies. [DOM].
注記: `生成元$は %文書 の作成-時にあてがわれた,一意かつ`不透明な生成元$になる。 ◎ The origin is a unique opaque origin assigned when the Document is created.
例えば、 `createDocument()$m ~API, 等々を利用して作成された`文書$。 ◎ ↑
`img$e 要素による画像に対しては: ◎ For images of img elements

その`画像~data$に応じて:

`~CORS非同一生成元$である場合: ◎ If the image data is CORS-cross-origin ◎
一意かつ`不透明な生成元$ — これは、画像の作成-時にあてがわれる。 ◎ A unique opaque origin assigned when the image is created.
`~CORS同一生成元$である場合: ◎ If the image data is CORS-same-origin
要素の`~node文書$の`生成元$ ◎ The img element's node document's origin.
`~media要素$( `audio$e / `video$e )に対しては: ◎ For audio and video elements

その`~media~data$に応じて:

`~CORS非同一生成元$である場合: ◎ If the media data is CORS-cross-origin
一意かつ`不透明な生成元$ — これは、~media~dataの~fetch時にあてがわれる。 ◎ A unique opaque origin assigned when the media data is fetched.
`~CORS同一生成元$である場合: ◎ If the media data is CORS-same-origin
要素の`~node文書$の`生成元$ ◎ The media element's node document's origin.

他の仕様は、特定0の[ `文書$ / 画像 / `~media要素$ ]の`生成元$を指定して上の定義を上書きし得る。 ◎ Other specifications can override the above definitions by themselves specifying the origin of a particular Document object, image, or media element.


`生成元の直列化@ は、所与の`生成元$ %生成元 に対し,次の~algoを適用して得られる文字列である: ◎ The serialization of an origin is the string obtained by applying the following algorithm to the given origin origin:

  1. ~IF[ %生成元 は`不透明な生成元$である ] ⇒ ~RET `null^l ◎ If origin is an opaque origin, then return "null".
  2. %結果 ~LET 次を順に連結した結果:

    1. %生成元 の`~scheme$
    2. `://^l
    3. %生成元 の`~host$を`~host直列化器$にかけた結果
    ◎ Otherwise, let result be origin's scheme. ◎ Append "://" to result. ◎ Append origin's host, serialized, to result.
  3. ~IF[ %生成元 の`~port$ ~EQ ~NULL ] ⇒ ~RET %結果 ◎ ↓
  4. ~RET 次を順に連結した結果:

    1. %結果
    2. `003A^U `:^smb
    3. %生成元 の`~port$を`整数として直列化-$urlした結果
    ◎ If origin's port is non-null, append a U+003A COLON character (:), and origin's port, serialized, to result. ◎ Return result.

`成分組~生成元$ ( `https^l, `xn--maraa-rta.example^l, ~NULL, ~NULL ) の`直列化$oは、 `https://xn--maraa-rta.example^l になる。 ◎ The serialization of ("https", "xn--maraa-rta.example", null, null) is "https://xn--maraa-rta.example".

注記: `生成元の~Unicode直列化^i も利用されていたが、それが広く採用されたことは,決してない。 ◎ There used to also be a Unicode serialization of an origin. However, it was never widely adopted.


次のいずれかを満たすような 2 つの`生成元$ %A, %B は、 `同一生成元@ とされる: ◎ Two origins, A and B, are said to be same origin if the following algorithm returns true:

  • [ %A, %B とも`不透明な生成元$である ]~AND[ %A ~EQ %B ] ◎ If A and B are the same opaque origin, then return true.
  • [ %A, %B とも`成分組~生成元$である ]~AND[ %A, %B の ( `~scheme$, `~host$, `~port$ ) は各~成分ごとに一致する ] ◎ If A and B are both tuple origins and their schemes, hosts, and port are identical, then return true. ◎ Return false.

このことを、 %A ~EQ`生成元$sub %B とも記す。 その否定を %A ~NEQ`生成元$sub %B と記す。

次のいずれかを満たすような 2 つの`生成元$ %A, %B は、 `同じ生成元~domain@ とされる: ◎ Two origins, A and B, are said to be same origin-domain if the following algorithm returns true:

  • [ %A, %B とも`不透明な生成元$である ]~AND[ %A ~EQ %B ] ◎ If A and B are the same opaque origin, then return true.
  • [ %A, %B とも`成分組~生成元$である ]~AND[ %A, %B は次のいずれかを満たす ]:

    • [ %A の`~domain$ ~EQ %B の`~domain$ ~NEQ ~NULL ]~AND[ %A の`~scheme$ ~EQ %B の`~scheme$ ]
    • [ %A の`~domain$ ~EQ %B の`~domain$ ~EQ ~NULL ]~AND[ %A ~EQ`生成元$sub %B ]
    ◎ If A and B are both tuple origins, run these substeps: • If A and B's schemes are identical, and their domains are identical and non-null, then return true. • Otherwise, if A and B are same origin and their domains are identical and null, then return true. ◎ Return false.

このことを、 %A ~EQ`~domain$sub %B とも記す。 その否定を %A ~NEQ`~domain$sub %B と記す。

【 これらの下付き~~文字による表記は、簡潔に記述するためにこの訳に導入したものである。 】

%A %B ~EQ`生成元$sub? ~EQ`~domain$sub?
(`https^l, `example.org^l, ~NULL, ~NULL) (`https^l, `example.org^l, ~NULL, ~NULL)
(`https^l, `example.org^l, 314, ~NULL) (`https^l, `example.org^l, 420, ~NULL)
(`https^l, `example.org^l, 314, `example.org^l) (`https^l, `example.org^l, 420, `example.org^l)
(`https^l, `example.org^l, ~NULL, ~NULL) (`https^l, `example.org^l, ~NULL, `example.org^l)
(`https^l, `example.org^l, ~NULL, `example.org^l) (`http^l, `example.org^l, ~NULL, `example.org^l)

7.5.1. 同一生成元 制約の緩め方

%document . `domain$m [ = %domain ]
保安~検査のために利用される現在の~domainを返す。 ◎ Returns the current domain used for security checks.
下位domainを除去するような値に設定して,`生成元$の`~domain$を変更できる — そうすることにより, 同じ~domainにおける他の下位domain上の頁と互いに~accessできるようになる(それらも,同じことをしたならば)。 (ただし,~sandbox化された `iframe$e においては設定できない。) ◎ Can be set to a value that removes subdomains, to change the origin's domain to allow pages on other subdomains of the same domain (if they do the same thing) to access each other. (Can't be set in sandboxed iframes.)

文字列 %~host~suffix文字列 は`~host$x %元~host に対し `登録可能な~domain~suffixまたは同等@ であるかどうか決定するときは、次を走らす: ◎ To determine if a string hostSuffixString is a registrable domain suffix of or is equal to a host originalHost, run these steps:

  1. ~IF[ %~host~suffix文字列 ~EQ 空~文字列 ] ⇒ ~RET ~F ◎ If hostSuffixString is the empty string, then return false.
  2. %~host ~LET %~host~suffix文字列 を`~host構文解析器$にかけた結果 ◎ Let host be the result of parsing hostSuffixString.
  3. ~IF[ %~host ~EQ `失敗^i ] ⇒ ~RET ~F ◎ If host is failure, then return false.
  4. ~IF[[ %~host と %元~host は`~hostとして同等$ ]ではない ]: ◎ If host is not equal to originalHost, then run these substeps:

    1. ~IF[ %~host , %元~host のいずれかは`~domain$urlでない ] ⇒ ~RET ~F ◎ If host or originalHost is not a domain, then return false.

      注記: すなわち、 `IPv4 ~address$url / `IPv6 ~address$url による`~host$xは除外する。 ◎ This is meant to exclude hosts that are an IPv4 address or an IPv6 address.

    2. %~host片 ~LET [ `002E^U `.^smb, %~host ]を連結した結果 ◎ ↓
    3. ~IF[ 次のいずれかが満たされる ]…:
      • %~host片 は %元~host の尾部に合致しない
      • %~host は Public Suffix List `PSL$r 内のある suffix に合致する
      • %~host片 は Public Suffix List 内のある suffix の尾部に合致する
      …ならば ⇒ ~RET ~F ◎ If host, prefixed by a U+002E FULL STOP (.), does not exactly match the end of originalHost, then return false. ◎ If host matches a suffix in the Public Suffix List, or, if host, prefixed by a U+002E FULL STOP (.), matches the end of a suffix in the Public Suffix List, then return false. [PSL]

      ~suffixとの比較は、~suffixを`~host構文解析器$にかけた後で~MUST。 ◎ Suffixes must be compared after applying the host parser algorithm.

  5. ~RET ~T ◎ Return true.

`Document$I 上の `domain@m 属性は、次で定義される:

  • 取得子は、次を走らせ~MUST: ◎ The domain attribute's getter must run these steps:

    1. ~IF[ 此れが`属する閲覧文脈$ ~EQ ε ] ⇒ ~RET 空~文字列 ◎ If this Document object does not have a browsing context, then return the empty string.
    2. %実効~domain ~LET 此れの`生成元$の`実効~domain$ ◎ Let effectiveDomain be this Document's origin's effective domain.
    3. ~IF[ %実効~domain ~EQ ~NULL ] ⇒ ~RET 空~文字列 ◎ If effectiveDomain is null, then return the empty string.
    4. ~RET %実効~domain を`~host直列化器$にかけた結果 ◎ Return effectiveDomain, serialized.
  • 設定子は、次を走らせ~MUST: ◎ The domain attribute's setter must run these steps:

    1. ~IF[ 此れが`属する閲覧文脈$ ~EQ ε ] ⇒ ~THROW `SecurityError$E ◎ If this Document object has no browsing context, then throw a "SecurityError" DOMException.
    2. ~IF[ `~document-domain$sbox ~IN 此れの`作動中の~sandbox用~flag集合$ ] ⇒ ~THROW `SecurityError$E ◎ If this Document object's active sandboxing flag set has its sandboxed document.domain browsing context flag set, then throw a "SecurityError" DOMException.
    3. %実効~domain ~LET 此れの`生成元$の`実効~domain$ ◎ Let effectiveDomain be this Document's origin's effective domain.
    4. ~IF[ %実効~domain ~EQ ~NULL ] ⇒ ~THROW `SecurityError$E ◎ If effectiveDomain is null, then throw a "SecurityError" DOMException.
    5. ~IF[ 所与の値は %実効~domain に対し`登録可能な~domain~suffixまたは同等$でない ] ⇒ ~THROW `SecurityError$E ◎ If the given value is not a registrable domain suffix of and is not equal to effectiveDomain, then throw a "SecurityError" DOMException.
    6. 此れの`生成元$の`~domain$ ~SET 所与の値を`~host構文解析器$にかけた結果 ◎ Set this Document object's origin's domain to the result of parsing the given value.

注記: `domain$m 属性は、同じ~domain上の異なる~host上の頁どうしが互いの DOM に~accessすることを可能化するために利用される。 ◎ The document.domain attribute is used to enable pages on different hosts of a domain to access each other's DOMs.

他者と~hostを共有しているときは、`document.domain$m 属性を利用しないこと。 信用できない第三者主体が、[ 同じ~IP~address上の~portだけ異なる~HTTP~server ]を~hostできる場合、通常は 同じ~host上の互いに異なる~siteを保護する,同一生成元による保護は、失敗することになる — `document.domain$m 属性が利用されて以降は、生成元の比較-時に,その~portは無視されるので。 ◎ Do not use the document.domain attribute when using shared hosting. If an untrusted third party is able to host an HTTP server at the same IP address but on a different port, then the same-origin protection that normally protects two different sites on the same host will fail, as the ports are ignored when comparing origins after the document.domain attribute has been used.

7.6. ~sandboxing

`~sandbox用~flag集合@ は、以下に挙げる各種~flagのうち,いくつかからなる集合である。 この集合は、それが含む各種~flagを通して,信用できない資源が持ち得る能を制約するために利用される: ◎ A sandboxing flag set is a set of zero or more of the following flags, which are used to restrict the abilities that potentially untrusted resources have:

【 “~sandbox” — 字義通り, “(こどもの)砂場” 。 】【 以下に現れる各種 “`X^sbox” は、 “[ X について,閲覧文脈を~sandbox化する( X の機能を抑止する) ]ことを指示する~flag” と解釈する — そのように解釈し易いよう、この訳では,関数的に記している。 】【 以下における “内容” とは、これらの~flagが適用される閲覧文脈~内の内容を指す。 】

`~navi@sbox ◎ The sandboxed navigation browsing context flag

この~flagは、~sandbox化されている当の閲覧文脈を %B とするとき, 次に挙げるもの以外の`閲覧文脈$ %C に対しては, %B の内容が %C を ~navigateするのを防止する

  • %B 自身
  • %B が更に内側に入子にしている閲覧文脈 `再帰的に?^tnote
  • %B が開いた`補助~閲覧文脈$(これは、`補助~navi$sboxにより保護される)†
  • %B の`~top-level閲覧文脈$(これは、 `利用者~作動化~top-level~navi$sbox, `非~利用者~作動化~top-level~navi$sbox により保護される)
◎ This flag prevents content from navigating browsing contexts other than the sandboxed browsing context itself (or browsing contexts further nested inside it), auxiliary browsing contexts (which are protected by the sandboxed auxiliary navigation browsing context flag defined next), and the top-level browsing context (which is protected by the sandboxed top-level navigation without user activation browsing context flag and sandboxed top-level navigation with user activation browsing context flag defined below).
† ここに述べた制約にもかかわらず、[ `補助~navi$sbox ~NIN `~sandbox用~flag集合$ ]の下では、ある種の事例においては,新たな`~top-level閲覧文脈$として %~popup ††を開くことが許容される。 そのような %~popup の作成-時には、それを作成した`閲覧文脈$が, %~popup の `許可済み~navigator@††† として設定される — それは、( ~naviに関して~sandbox化されていても)実際には %~popup に対する~navigateが許可される。 (他の場合、 %~popup に対する~navigateは,`~navi$sboxにより防止される。) ◎ If the sandboxed auxiliary navigation browsing context flag is not set, then in certain cases the restrictions nonetheless allow popups (new top-level browsing contexts) to be opened. These browsing contexts always have one permitted sandboxed navigator, set when the browsing context is created, which allows the browsing context that created them to actually navigate them. (Otherwise, the sandboxed navigation browsing context flag would prevent them from being navigated even if they were opened.)
【†† すなわち、`補助~閲覧文脈$。 】【††† “one permitted sandboxed navigator” — この “one” は、[ %~popup に対し`許可済み~navigator$とされるものは、きっかり 1 個ある ]ことを表していると見受けられる。 】
`補助~navi@sbox ◎ The sandboxed auxiliary navigation browsing context flag
この~flagは、内容が 新たな補助~閲覧文脈を作成することを防止する — 例えば[ `target$a 属性 / `window.open()$m ~method ]を利用して。 ◎ This flag prevents content from creating new auxiliary browsing contexts, e.g. using the target attribute or the window.open() method.
`非~利用者~作動化~top-level~navi@sbox
`利用者~作動化~top-level~navi@sbox
両~flagとも、内容が その~top-level閲覧文脈を[ ~navigateすることを防止する閉じることを防止する ]。 これらは順に、`利用者による作動化から誘発されて$[ いない, いる ]~algoからのみ,あたられる。 ◎ The sandboxed top-level navigation without user activation browsing context flag ◎ This flag prevents content from navigating their top-level browsing context and prevents content from closing their top-level browsing context. It is consulted only from algorithms that are not triggered by user activation.
両~flagとも、影響するのは`~top-level閲覧文脈$に限られる — [ この~flag ~NIN `~sandbox用~flag集合$ ]の下では、内容は,その`~top-level閲覧文脈$を~navigateできる(~flagは`利用者による作動化から誘発されて$いるかどうかに応じて適切な方とする)。 が、他の`閲覧文脈$は,依然として他の~flag — `~navi$sboxや, (場合によっては)`補助~navi$sbox — により保護される。 ◎ When the sandboxed top-level navigation without user activation browsing context flag is not set, content can navigate its top-level browsing context, but other browsing contexts are still protected by the sandboxed navigation browsing context flag and possibly the sandboxed auxiliary navigation browsing context flag. ◎ The sandboxed top-level navigation with user activation browsing context flag ◎ This flag prevents content from navigating their top-level browsing context and prevents content from closing their top-level browsing context. It is consulted only from algorithms that are triggered by user activation. ◎ As with the sandboxed top-level navigation without user activation browsing context flag, this flag only affects the top-level browsing context; if it is not set, other browsing contexts might still be protected by other flags.
`~plugin@sbox ◎ The sandboxed plugins browsing context flag
この~flagは、内容が[[ `embed^e 要素`object^e 要素~applet要素 ]を利用して, あるいは `入子の閲覧文脈$ に対する~naviを通して ],~pluginを~instance化することを防止する — それらの`~plugin$を`保安化-$できない限り。 ◎ This flag prevents content from instantiating plugins, whether using the embed element, the object element, the applet element, or through navigation of a nested browsing context, unless those plugins can be secured.
`生成元@sbox ◎ The sandboxed origin browsing context flag
この~flagは、 内容を一意`かつ不透明?^tnoteな生成元~内に強制する — したがって,内容が同じ`生成元$からの他の内容へ~accessすることを防止する。 ◎ This flag forces content into a unique origin, thus preventing it from accessing other content from the same origin.
この~flagはまた、~scriptが `document.cookie^m ~IDL属性を 読取る/書込むことを防止する ことに加え, `localStorage$m への~accessも阻止する。 ◎ This flag also prevents script from reading from or writing to the document.cookie IDL attribute, and blocks access to localStorage.
`~form@sbox ◎ The sandboxed forms browsing context flag
この~flagは、 ~form提出を阻止する 。 ◎ This flag blocks form submission.
`~pointer~lock@sbox ◎ The sandboxed pointer lock browsing context flag
この~flagは、 Pointer Lock ~APIを不能化する。 `POINTERLOCK$r ◎ This flag disables the Pointer Lock API. [POINTERLOCK]
`~script@sbox ◎ The sandboxed scripts browsing context flag
この~flagは、 ~script実行を阻止する。 ◎ This flag blocks script execution.
`自動~特色機能@sbox ◎ The sandboxed automatic features browsing context flag

この~flagは、次に挙げるような自動的に誘発される特色機能を阻止する:

◎ This flag blocks features that trigger automatically, such as automatically playing a video or automatically focusing a form control.
`~sandbox化( ~storage域~URL )~flag@ ◎ The sandboxed storage area URLs flag
この~flagは、[ ~storage域を利用するような ~URL~scheme† ]が,生成元の~dataに~accessすることを防止する。 ◎ This flag prevents URL schemes that use storage areas from being able to access the origin's data.
【† 例えば `filesystem_^sc ~scheme?( 参考 ) 】
`~document-domain@sbox ◎ The sandboxed document.domain browsing context flag
この~flagは、 `document.domain$m 設定子の利用を防止する。 ◎ This flag prevents content from using the document.domain setter.
`~sandboxは補助~閲覧文脈に伝播する~flag@ ◎ The sandbox propagates to auxiliary browsing contexts flag
この~flagは、[ 内容にて`作動中の~sandbox用~flag集合$ ]を[ 内容が作成する`補助~閲覧文脈$ ]に継承させることにより,内容が ~sandboxから逃れることを防止する。 ◎ This flag prevents content from escaping the sandbox by ensuring that any auxiliary browsing context it creates inherits the content's active sandboxing flag set.
`~sandbox化( ~modal )~flag@ ◎ The sandboxed modals flag

この~flagは、[ 内容が,次のいずれかの特色機能を利用して~modal~dialogを生産する ]ことを防止する: ◎ This flag prevents content from using any of the following features to produce modal dialogs:

  • `window.alert()$m
  • `window.confirm()$m
  • `window.print()$m
  • `window.prompt()$m
  • `beforeunload$et ~event
`方位~lock@sbox ◎ The sandboxed orientation lock browsing context flag
この~flagは、~screen方位を~lockする能を不能化する。 `SCREENORIENTATION$r ◎ This flag disables the ability to lock the screen orientation. [SCREENORIENTATION]
`呈示@sbox ◎ The sandboxed presentation browsing context flag
この~flagは、 Presentation API を不能化する。 `PRESENTATION$r ◎ This flag disables the Presentation API. [PRESENTATION]

`~sandbox用~指令を構文解析する@ 手続きは、所与の ( 文字列 %入力, `~sandbox用~flag集合$ %出力 ) に対し,次を走らせ~MUST: ◎ When the user agent is to parse a sandboxing directive, given a string input, a sandboxing flag set output, it must run the following steps:

  1. %tokens ~LET %入力 を`~ASCII空白で分割-$した結果 ◎ Split input on ASCII whitespace, to obtain tokens.
  2. %出力 を空にする ◎ Let output be empty.
  3. 以下に挙げる各種~flagを,対応する記述の条件が満たされるならば %出力 に追加する: ◎ Add the following flags to output:

    • `~navi$sbox ⇒ 無条件 ◎ The sandboxed navigation browsing context flag.
    • `補助~navi$sbox ⇒ `allow-popups@v ~NIN %tokens ◎ The sandboxed auxiliary navigation browsing context flag, unless tokens contains the allow-popups keyword.
    • `非~利用者~作動化~top-level~navi$sbox ⇒ `allow-top-navigation@v ~NIN %tokens ◎ The sandboxed top-level navigation without user activation browsing context flag, unless tokens contains the allow-top-navigation keyword.
    • `利用者~作動化~top-level~navi$sbox ⇒ [ `allow-top-navigation-by-user-activation@v ~NIN %tokens ]~AND[ `allow-top-navigation$v ~NIN %tokens ] ◎ The sandboxed top-level navigation with user activation browsing context flag, unless tokens contains either the allow-top-navigation-by-user-activation keyword or the allow-top-navigation keyword.

      注記: したがって、[ `allow-top-navigation$v ~IN %tokens ]の場合、 `allow-top-navigation-by-user-activation$v の効果はなくなる。 この理由から、両~keywordとも指定するのは,文書~適合性の~errorになる。 ◎ This means that if the allow-top-navigation is present, the allow-top-navigation-by-user-activation keyword will have no effect. For this reason, specifying both is a document conformance error.

    • `~plugin$sbox ⇒ 無条件 ◎ The sandboxed plugins browsing context flag.
    • `生成元$sbox ⇒ `allow-same-origin@v ~NIN %tokens ◎ The sandboxed origin browsing context flag, unless the tokens contains the allow-same-origin keyword.

      注記: `allow-same-origin$v ~keywordは、次の二つ事例に意図されている: ◎ The allow-same-origin keyword is intended for two cases.

      • 一つは、同じ~siteからの内容を,次のように~sandbox化するための利用:

        • 内容による~scriptingは不能化する。
        • 内容の~DOMへの~accessは許容する。
        ◎ First, it can be used to allow content from the same site to be sandboxed to disable scripting, while still allowing access to the DOM of the sandboxed content.
      • もう一つは、第三者主体~siteからの内容を埋込むときに,その内容を次のように~sandbox化するための利用:

        • その~siteが ~popup~windowを開く, 等々は防止する。
        • [ 埋込まれた頁が、~dataを格納するための~database~API, 等を利用して,その出自の~siteと通信する ]ことは防止しない。
        ◎ Second, it can be used to embed content from a third-party site, sandboxed to prevent that site from opening pop-up windows, etc, without preventing the embedded page from communicating back to its originating site, using the database APIs to store data, etc.
    • `~form$sbox ⇒ `allow-forms@v ~NIN %tokens ◎ The sandboxed forms browsing context flag, unless tokens contains the allow-forms keyword.
    • `~pointer~lock$sbox ⇒ `allow-pointer-lock@v ~NIN %tokens ◎ The sandboxed pointer lock browsing context flag, unless tokens contains the allow-pointer-lock keyword.
    • `~script$sbox ⇒ `allow-scripts@v ~NIN %tokens ◎ The sandboxed scripts browsing context flag, unless tokens contains the allow-scripts keyword.
    • `自動~特色機能$sbox ⇒ `allow-scripts$v ~NIN %tokens ◎ The sandboxed automatic features browsing context flag, unless tokens contains the allow-scripts keyword (defined above).

      注記: この~flagは、`~script$sboxと同じ~keywordで緩められる — この~flagにより許容されなくなる宣言的~特色機能は、~scriptが可能化されている下では自明に可能0になるので。 ◎ This flag is relaxed by the same keyword as scripts, because when scripts are enabled these features are trivially possible anyway, and it would be unfortunate to force authors to use script to do them when sandboxed rather than allowing them to use the declarative features.

    • `~sandbox化( ~storage域~URL )~flag$ ⇒ 無条件 ◎ The sandboxed storage area URLs flag.
    • `~document-domain$sbox ⇒ 無条件 ◎ The sandboxed document.domain browsing context flag.
    • `~sandboxは補助~閲覧文脈に伝播する~flag$ ⇒ `allow-popups-to-escape-sandbox@v ~NIN %tokens ◎ The sandbox propagates to auxiliary browsing contexts flag, unless tokens contains the allow-popups-to-escape-sandbox keyword.
    • `~sandbox化( ~modal )~flag$ ⇒ `allow-modals@v ~NIN %tokens ◎ The sandboxed modals flag, unless tokens contains the allow-modals keyword.
    • `方位~lock$sbox ⇒ `allow-orientation-lock@v ~NIN %tokens ◎ The sandboxed orientation lock browsing context flag, unless tokens contains the allow-orientation-lock keyword.
    • `呈示$sbox ⇒ `allow-presentation@v ~NIN %tokens ◎ The sandboxed presentation browsing context flag, unless tokens contains the allow-presentation keyword.

`~sandbox用~flag集合$には、次に挙げる種類のものがある:

  • どの`~top-level閲覧文脈$も, `~popup~sandbox用~flag集合@ を有する — それは:

    • `閲覧文脈$の作成-時には空~集合で~MUST。
    • `閲覧文脈を選ぶ規則$により拡充される。
    ◎ Every top-level browsing context has a popup sandboxing flag set, which is a sandboxing flag set. When a browsing context is created, its popup sandboxing flag set must be empty. It is populated by the rules for choosing a browsing context.
  • どの`入子の閲覧文脈$も, `~iframe~sandbox用~flag集合@ を有する — それは:

    • 与えられた特定0の時点に,どの~flagが含められるかは、 `iframe$e 要素の`sandbox$a 属性により決定される。
    ◎ Every browsing context that is a nested browsing context has an iframe sandboxing flag set, which is a sandboxing flag set. Which flags in a nested browsing context's iframe sandboxing flag set are set at any particular time is determined by the iframe element's sandbox attribute.
  • どの`文書$も, `作動中の~sandbox用~flag集合@ を有する — それは:

    • `文書$の作成-時には空~集合で~MUST。
    • `~navi$~algoにより拡充される。
    ◎ Every Document has an active sandboxing flag set, which is a sandboxing flag set. When the Document is created, its active sandboxing flag set must be empty. It is populated by the navigation algorithm.
  • `~navi$~algoにより得られるどの資源も、 `強制~sandbox用~flag集合@ を有する — それは:

    • 既定では空~集合である。
    • 他の仕様は,ある種の~flagをこの集合に入れるように定義し得る。
    ◎ Every resource that is obtained by the navigation algorithm has a forced sandboxing flag set, which is a sandboxing flag set. A resource by default has no flags set in its forced sandboxing flag set, but other specifications can define that certain flags are set.

    注記: `強制~sandbox用~flag集合$は、特に, Content Security Policy `CSP$r により利用される。 ◎ In particular, the forced sandboxing flag set is used by Content Security Policy. [CSP]


`文書$ %文書 に対し `~sandboxingを実装する@ ときは、 %文書 の`作動中の~sandbox用~flag集合$ %S を,次のように 各種`~sandbox用~flag集合$の和集合で拡充する: ◎ To implement the sandboxing for a Document object document, populate document's active sandboxing flag set with the union of the flags that are present in the following sandboxing flag sets:

  1. %B ~LET %文書 が`属する閲覧文脈$ ◎ ↓
  2. ~IF[ %B は`~top-level閲覧文脈$である ] ⇒ %S ~SET %S ∪ [ %B の`~popup~sandbox用~flag集合$ ] ◎ If document's browsing context is a top-level browsing context, then: the flags set on the browsing context's popup sandboxing flag set.
  3. ~IF[ %B は`入子の閲覧文脈$である ] ⇒ %S ~SET %S ∪ [ %B の`~iframe~sandbox用~flag集合$ ] ∪ [[ %B の`親~閲覧文脈$にて`作動中の文書$ ]の`作動中の~sandbox用~flag集合$ ] ◎ If document's browsing context is a nested browsing context, then: the flags set on the browsing context's iframe sandboxing flag set. ◎ If document's browsing context is a nested browsing context, then: the flags set on the browsing context's parent browsing context's active document's active sandboxing flag set.
  4. ~IF[ %文書 の資源には`強制~sandbox用~flag集合$ %T がある ] ⇒ %S ~SET %S ∪ %T ◎ The flags set on document's resource's forced sandboxing flag set, if it has one.

7.7. ~session履歴と~navi

7.7.1. 閲覧文脈の~session履歴

`閲覧文脈$ %B に`属する文書$たちからなる連列は、 %B の`~session履歴$を成す†。 `入子の閲覧文脈$を含め,どの`閲覧文脈$も、互いに別個の`~session履歴$を有する。 各 `~session履歴@ は,何個かの`~session履歴~entry$からなる平坦な~listである。

【† この記述は、文書と~session履歴~entryとを同一視している。 しかしながら、複数の~entryが同じ文書に対応し得る。 】

各 `~session履歴~entry@ は,次のものからなる:

  • `~URL$
  • `直列形の状態$
  • ~title
  • `文書$
  • ~form~data
  • `~scroll復旧~mode$
  • ~scroll位置
  • `閲覧文脈~名$

これらのうち,`~URL$のみが必須とされる。 ~entryには、これら以外の情報も結付けられ得る。

◎ The sequence of Documents in a browsing context is its session history. Each browsing context, including nested browsing contexts, has a distinct session history. A browsing context's session history consists of a flat list of session history entries. Each session history entry consists, at a minimum, of a URL, and each entry may in addition have serialized state, a title, a Document object, form data, a scroll restoration mode, a scroll position, a browsing context name, and other information associated with it.

注記: 各~entryは、最初に作成された時点で`文書$が結付けられるが、`文書$が`作動中$でないときは,資源を解放するため`破棄-$docされることもある。 `~session履歴~entry$内の`~URL$その他の~dataは、~UAが その`文書$を再び作動化する必要があると見出した場合に,元のものから新たな`文書$に代替わりするときに利用される。 ◎ Each entry, when first created, has a Document. However, when a Document is not active, it's possible for it to be discarded to free resources. The URL and other data in a session history entry is then used to bring a new Document into being to take the place of the original, in case the user agent finds itself having to reactivate that Document.

注記: `~session履歴~entry$の~titleは、`文書$の現在の `title$e に関係する必要はない。 この~titleが意図する所は、利用者が文書の履歴を~navigateできるよう,その時点での文書の状態を説明するためにある。 ◎ Titles associated with session history entries need not have any relation with the current title of the Document. The title of a session history entry is intended to explain the state of the document at that point, so that the user can navigate the document's history.

`直列形の状態$が結付けらていない~URLは、利用者が(または~scriptにより)頁から頁へ~navigateするに伴い,~session履歴に追加される。 ◎ URLs without associated serialized state are added to the session history as the user (or script) navigates from page to page.


`閲覧文脈$の`~session履歴$内の各 `文書$には、一意な `History$I ~objが結付けられる — そのいずれも、同じ下層の`~session履歴$を~model化し~MUST。 ◎ Each Document object in a browsing context's session history is associated with a unique History object which must all model the same underlying session history.

`~window$上の `history@m 属性の取得子は、此れに`結付けられている文書$に結付けられている `History$I ~objを返さ~MUST。 ◎ The history attribute of the Window interface must return the object implementing the History interface for this Window object's associated Document.


`直列形の状態@ は、~UI状態を表現している~objを( `StructuredSerializeForStorage$jA を介して)直列化したものである。 非公式には、 “状態~obj” と呼ばれることもある — それは、[ 作者から給された,~UI状態を表現している~obj ],あるいは[ `直列形の状態$を( `StructuredDeserialize$jA を介して)逆直列化して作成される~obj ]を表す。 ◎ Serialized state is a serialization (via StructuredSerializeForStorage) of an object representing a user interface state. We sometimes informally refer to "state objects", which are the objects representing user interface state supplied by the author, or alternately the objects created by deserializing (via StructuredDeserialize) serialized state.

頁は、~session履歴に`直列形の状態$を追加できる。 これは、利用者(または~script)が履歴~内を後戻したときに,`逆直列化-$された上で ~scriptに返される。 したがって、 1 頁だけの~appにおいても,作者が “~navi” の~metaphorを利用できるようにする。 ◎ Pages can add serialized state to the session history. These are then deserialized and returned to the script when the user (or script) goes back in the history, thus enabling authors to use the "navigation" metaphor even in one-page applications.

注記: `直列形の状態$には、主に 二つの用途が意図されている:

  • 一つは、予め構文解析した状態の記述を `~URL$と一緒に格納して,単純な事例では 作者が構文解析せずに済むようにすること(元々利用者から渡された`~URL$を取扱うときは,依然として それを構文解析する必要があるので、これは小さな最適化に過ぎない)。
  • もう一つは、他からは格納されない状態 — 現在の`文書$~instanceにのみ適用され,同じ~URLの`文書$が新たに開かれるときには再構築される必要があるような、状態 — を,作者が ~URLと一緒に格納できるようにすること。
◎ Serialized state is intended to be used for two main purposes: first, storing a preparsed description of the state in the URL so that in the simple case an author doesn't have to do the parsing (though one would still need the parsing for handling URLs passed around by users, so it's only a minor optimization). Second, so that the author can store state that one wouldn't store in the URL because it only applies to the current Document instance and it would have to be reconstructed if a new Document were opened.

後者の用例には、次が挙げられる:

  • 利用者が後戻するときに、以前に~animateさせていた~popup `div$e を,同じ所在から~animateし続けれるよう,精確に協調するように追跡する。
  • [[ `~URL$ 内の情報に基づいて~serverから~fetchされるような~data ]の~cache ]の中への~pointerを保っておいて、後戻する/先進するときに,その情報を再度~fetchせずに済むようにする。
◎ An example of the latter would be something like keeping track of the precise coordinate from which a pop-up div was made to animate, so that if the user goes back, it can be made to animate to the same location. Or alternatively, it could be used to keep a pointer into a cache of data that would be fetched from the server based on the information in the URL, so that when going back and forward, the information doesn't have to be fetched again.

どの時点においても,`~session履歴$内のある一つの~entryが `現在の~entry@ になる。 これは、`閲覧文脈$にて`作動中の文書$を表現している~entryになる。 どの~entryが`現在の~entry$になるかは、この仕様に定義される~algo — 例えば`履歴を走査する$間など — により変更される。 ◎ At any point, one of the entries in the session history is the current entry. This is the entry representing the active document of the browsing context. Which entry is the current entry is changed by the algorithms defined in this specification, e.g. during session history traversal.

【 `作動中の文書$は常にあるので、~session履歴が空になることはない。 】

注記: `現在の~entry$は,通例的には`文書$の`~URL$docに対する~entryであるが、その文書により履歴に追加されたいずれかの`直列形の状態$に対する~entryにもなり得る。 ◎ The current entry is usually an entry for the URL of the Document. However, it can also be one of the entries for serialized state added to the history by that document.

~UAにより定義される状態も持つような~entryは、 `持続的~利用者~状態を伴う@ とされる。 どのような種類の状態を格納し得るかは、この仕様では,指定しない。 ◎ An entry with persisted user state is one that also has user-agent defined state. This specification does not specify what kind of state can be stored.

例えば、~scroll位置や,~form~controlの値を持続化しようと求める~UAもある。 ◎ For example, some user agents might want to persist the scroll position, or the values of form controls.

注記: ~form~controlの値を持続化する~UAには、それらの書字方向性(要素の `dir$a 属性~値)も持続化することが奨励される。 これは、明示的かつ非~既定の書字方向性の下で,利用者が元々手入力した値が,履歴の走査~後に不正に表示されることを防止する。 ◎ User agents that persist the value of form controls are encouraged to also persist their directionality (the value of the element's dir attribute). This prevents values from being displayed incorrectly after a history traversal when the user had originally entered the values with an explicit, non-default directionality.

~entryの `~scroll復旧~mode@ は、~UAがその~entryへ走査したとき,持続的~scroll位置(もしあれば)を復旧するべきかどうかを指示する。 ~scroll復旧~modeは次のいずれかをとり得る: ◎ An entry's scroll restoration mode indicates whether the user agent should restore the persisted scroll position (if any) when traversing to it. The scroll restoration mode may be one of the following:

`auto@l
~UAが、~naviに際して~scroll位置を復旧する責を負う。 ◎ The user agent is responsible for restoring the scroll position upon navigation.
`manual@l
頁が、~naviに際して~scroll位置を復旧する責を負う。 ~UAは、それを自動的に試みない。 ◎ The page is responsible for restoring the scroll position and the user agent does not attempt to do so automatically

指定されていない場合、新たな~entryの`~scroll復旧~mode$は `auto$l に設定され~MUST。 ◎ If unspecified, the scroll restoration mode of a new entry must be set to "auto".

`直列形の状態$を包含する各~entryは、その追加-時に作動中であった頁に対する~entryと同じ`文書$を共有する。 ◎ Entries that contain serialized state share the same Document as the entry for the page that was active when they were added.

`~URL$の`素片$urlのみ相違するような,連続的な各~entryも、同じ`文書$を共有する。 ◎ Contiguous entries that differ just by their URLs' fragments also share the same Document.

注記: 同じ`文書$を共有するすべての~entryは、定義により連続的になる(それらは、単に,特定0の文書の異なる状態たちである)。 ◎ All entries that share the same Document (and that are therefore merely different states of one particular document) are contiguous by definition.

`閲覧文脈$ %B に`属する文書$ %文書 の `最近の~entry@ とは、[ %B の`~session履歴$内の~entry ]のうち[ ~entryの`文書$ ~EQ %文書 ]なるもの ]があれば、それらのうち最も近過去に走査された~entryである。 そのような~entryがなければ(`文書$の作成-時)、 ε (なし)とする。 ◎ Each Document in a browsing context can also have a latest entry. This is the entry for that Document to which the browsing context's session history was most recently traversed. When a Document is created, it initially has no latest entry.

~UAは、`~session履歴$内の~entry %entry に対しては:

  • [ %entry は`現在の~entry$でない ]~AND[ %entry は どの~scriptからも参照されていない ]ならば、 %entry の`文書$を,`破棄-$docしてよい — 利用者/~scriptがそのような頁に~navigateして戻ったときは,頁を再読込みすることになる。 この仕様は、~UAがいつ`文書$を[ 破棄する/~cacheする ]べきかについては指定しない。 ◎ User agents may discard the Document objects of entries other than the current entry that are not referenced from any script, reloading the pages afresh when the user or script navigates back to such pages. This specification does not specify when user agents should discard Document objects and when they should cache them.
  • 前項により %entry の`文書$が破棄されたとしても、下に与える各種~algoの目的0においては,そうでなかったかのように動作し~MUST。 利用者あるいは~scriptが,~DOM~objを~~記憶していない頁へ~navigateして戻った/進んだときは、同じ`文書$を共有していた他の~entryも,その新たな文書~objを共有し~MUST。 ◎ Entries that have had their Document objects discarded must, for the purposes of the algorithms given below, act as if they had not. When the user or script navigates back or forwards to a page which has no in-memory DOM objects, any other entries that shared the same Document object with it must share the new object as well.

7.7.2. `History^I ~interface

enum `ScrollRestoration@I { `auto$l, `manual$l };

interface `History@I {
  readonly attribute unsigned long `length$m;
  attribute `ScrollRestoration$I `scrollRestoration$m;
  readonly attribute any `state$m;
  void `go$m(optional long %delta = 0);
  void `back$m();
  void `forward$m();
  void `pushState$m(any %data, DOMString %title, optional USVString? %url = null);
  void `replaceState$m(any %data, DOMString %title, optional USVString? %url = null);
};
%window . `history$m . `length$m
`共同~session履歴$内の~entryの個数を返す。 ◎ Returns the number of entries in the joint session history.
%window . `history$m . `scrollRestoration$m [ = %value ]
`~session履歴$内の現在の~entryの`~scroll復旧~mode$を返す。 ◎ Returns the scroll restoration mode of the current entry in the session history.
設定して、`~session履歴$内の現在の~entryの`~scroll復旧~mode$を変更できる。 ◎ Can be set, to change the scroll restoration mode of the current entry in the session history.
%window . `history$m . `state$m
現在の`直列形の状態$を逆直列化した結果の~objを返す。 ◎ Returns the current serialized state, deserialized into an object.
%window . `history$m . `go$m( [ %delta ] )
`共同~session履歴$内で,指定された段~数だけ後戻する/先進する。 ◎ Goes back or forward the specified number of steps in the joint session history.
%delta に対する~zeroは、現在の頁を再読込みさせることになる。 ◎ A zero delta will reload the current page.
%delta が範囲~外を指す場合は何もしない。 ◎ If the delta is out of range, does nothing.
%window . `history$m . `back$m()
`共同~session履歴$内で 1 段だけ後戻する。 ◎ Goes back one step in the joint session history.
前~頁がない場合は何もしない。 ◎ If there is no previous page, does nothing.
%window . `history$m . `forward$m()
`共同~session履歴$内で 1 段だけ先進する。 ◎ Goes forward one step in the joint session history.
次~頁がない場合は何もしない。 ◎ If there is no next page, does nothing.
%window . `history$m . `pushState$m(%data, %title [, %url ] )
%data, %title を~session履歴に~pushする — %url が与えられていて ~NULL でなければ それも伴わせて。 ◎ Pushes the given data onto the session history, with the given title, and, if provided and not null, the given URL.
%window . `history$m . `replaceState$m(%data, %title [, %url ] )
[ %data, %title, %url(省略時は ~NULL ) ]で,~session履歴~内の現在の~entryのそれらを更新する。 ◎ Updates the current entry in the session history to have the given data, title, and, if provided and not null, URL.

`~top-level閲覧文脈$ %B の `共同~session履歴@ とは、[ 次を満たす各 `閲覧文脈$ %B1 の`~session履歴$内の~entryうち,その`現在の~entry$以外のもの ]すべての和集合に,`共同~session履歴の現在の~entry$を加えたものである:

  • %B1 の`~top-level閲覧文脈$ ~EQ %B
  • %B1 にて`作動中の文書$は、`全部的に作動中$である
◎ The joint session history of a top-level browsing context is the union of all the session histories of all browsing contexts of all the fully active Document objects that share that top-level browsing context, with all the entries that are current entries in their respective session histories removed except for the current entry of the joint session history.

`共同~session履歴の現在の~entry@ は、それを成す`~session履歴$たちの`現在の~entry$のうち,最も近過去にそうなったものを指す。 ◎ The current entry of the joint session history is the entry that most recently became a current entry in its session history.

`共同~session履歴$内の各~entryは,各自が属する`~session履歴$に追加された時刻により時系列的に順序付けられ、その順に 1 ずつ増加する整数~indexが付与される — 最も早期の~entryに付与される~indexは 0 とする。 ◎ Entries in the joint session history are ordered chronologically by the time they were added to their respective session histories. Each entry has an index; the earliest entry has index 0, and the subsequent entries are numbered with consecutively increasing integers (1, 2, 3, etc).

注記: 同じ`閲覧文脈$に`属する文書$たち それぞれの`~event-loop$は,互いに異なり得るので、`共同~session履歴$の実際の状態は,いくぶん漠然としたものになり得る。 例えば、同じ生成元に属していた二つの同胞 `iframe$e 要素が,同時に別の生成元へ`履歴を走査する$こともあるので、それらの精確な順序は~well-definedにならないかもしれない。 同様に,互いが他方を後と見出すこともあるため、それぞれにとっての`共同~session履歴$の長さには,食い違いが生じるかもしれない。 ◎ Since each Document in a browsing context might have a different event loop, the actual state of the joint session history can be somewhat nebulous. For example, two sibling iframe elements could both traverse from one unique origin to another at the same time, so their precise order might not be well-defined; similarly, since they might only find out about each other later, they might disagree about the length of the joint session history.

`length@m

取得子は、次を走らせ~MUST:

  1. ~IF[ 此れを結付けている文書は`全部的に作動中$でない ] ⇒ ~THROW `SecurityError$E
  2. ~RET `~top-level閲覧文脈$の`共同~session履歴$内の~entryの個数
◎ The length attribute of the History interface, on getting, must return the number of entries in the top-level browsing context's joint session history. If this History object is associated with a Document that is not fully active, getting must instead throw a "SecurityError" DOMException.
~scriptからは、実際の各~entryに~accessし得ない。 ◎ The actual entries are not accessible from script.
`scrollRestoration@m

取得子は、次を走らせ~MUST:

  1. ~IF[ 此れを結付けている文書は`全部的に作動中$でない ] ⇒ ~THROW `SecurityError$E
  2. ~RET `~session履歴$内の`現在の~entry$の`~scroll復旧~mode$

設定子は、次を走らせ~MUST:

  1. ~IF[ 此れを結付けている文書は`全部的に作動中$でない ] ⇒ ~THROW `SecurityError$E
  2. `~session履歴$内の`現在の~entry$の`~scroll復旧~mode$ ~SET 所与の値
◎ The scrollRestoration attribute of the History interface, on getting, must return the scroll restoration mode of the current entry in the session history. On setting, the scroll restoration mode of the current entry in the session history must be set to the new value. If this History object is associated with a Document that is not fully active, both getting and setting must instead throw a "SecurityError" DOMException.
`state@m

この属性は、初期~時には、値は~NULL にされ~MUST。

取得子は、次を走らせ~MUST:

  1. ~IF[ 此れを結付けている文書は`全部的に作動中$でない ] ⇒ ~THROW `SecurityError$E
  2. ~RET ~UAにより設定された最後の値
◎ The state attribute of the History interface, on getting, must return the last value it was set to by the user agent. If this History object is associated with a Document that is not fully active, getting must instead throw a "SecurityError" DOMException. Initially, its value must be null.
`go(delta)@m

被呼出時には、次を走らせ~MUST:

  1. ~IF[ 此れを結付けている文書は`全部的に作動中$でない ] ⇒ ~THROW `SecurityError$E
  2. ~IF[ %delta ~NEQ 0 ] ⇒ %delta だけ`履歴を前/後に走査する$
  3. ~ELSE ⇒ `location.reload()$m ~methodが~callされたかのように動作する
◎ When the go(delta) method is invoked, if delta is zero, the user agent must act as if the location.reload() method was called instead. Otherwise, the user agent must traverse the history by a delta whose value is delta. If this History object is associated with a Document that is not fully active, invoking must instead throw a "SecurityError" DOMException.
`back()@m
被呼出時には、 −1 を引数に `go()$m が~callされたかのように動作し~MUST。 ◎ When the back() method is invoked, the user agent must traverse the history by a delta −1. If this History object is associated with a Document that is not fully active, invoking must instead throw a "SecurityError" DOMException.
`forward()@m
被呼出時には、 +1 を引数に `go()$m が~callされたかのように動作し~MUST。 ◎ When the forward() method is invoked, the user agent must traverse the history by a delta +1. If this History object is associated with a Document that is not fully active, invoking must instead throw a "SecurityError" DOMException.

各`~top-level閲覧文脈$は、初期~時には空の `~session履歴~走査~待行列@ を持ち,`~task$を追加できる。 ◎ Each top-level browsing context has a session history traversal queue, initially empty, to which tasks can be added.

各`~top-level閲覧文脈$ %B の作成-時には、その時点から`並列的$に,次の~algoを走らせ~MUST — この~algoは, %B に対する `~session履歴~event-loop@ と呼ばれる: ◎ Each top-level browsing context, when created, must begin running the following algorithm, known as the session history event loop for that top-level browsing context, in parallel:

  1. %待行列 ~LET %B の`~session履歴~走査~待行列$ ◎ ↓
  2. ~WHILE 無条件

    1. %待行列 が空でなくなるまで待機する ◎ Wait until this top-level browsing context's session history traversal queue is not empty.
    2. %待行列 から最初の`~task$を取出して、それを実行する ◎ Pull the first task from this top-level browsing context's session history traversal queue, and execute it. ◎ Return to the first step of this algorithm.

`~session履歴~event-loop$は、`共同~session履歴$内の各 閲覧文脈~間の遷移を協調させ易くするためにある。 特定0の時点に,各 `閲覧文脈$が有する`~event-loop$は、互いに異なり得るので(これは、~UAが`互いに関係する閲覧文脈~群$ごとに複数の`~event-loop$を有するときに起こり得る)、さもなければ,遷移に際し各~event-loop間の同期をとる必要が生じる。 ◎ The session history event loop helps coordinate cross-browsing-context transitions of the joint session history: since each browsing context might, at any particular time, have a different event loop (this can happen if the user agent has more than one event loop per unit of related browsing contexts), transitions would otherwise have to involve cross-event-loop synchronization.


%delta だけ`履歴を前/後に走査する@ ときは、~UAは,当の`~top-level閲覧文脈$の`~session履歴~走査~待行列$に,次の手続きを走らす`~task$を付加し~MUST: ◎ To traverse the history by a delta delta, the user agent must append a task to this top-level browsing context's session history traversal queue, the task consisting of running the following steps:

  1. %履歴 ~LET `共同~session履歴$ ◎ ↓
  2. %index ~LET ( `共同~session履歴の現在の~entry$の~index ) ~PLUS %delta ◎ ↓
  3. ~IF[ %index ~LT ~zero ]~OR[ %index ~GTE %履歴 内の~entry数 ] ⇒ ~RET ◎ If the index of the current entry of the joint session history plus delta is less than zero or greater than or equal to the number of items in the joint session history, then abort these steps.
  4. %~entry ~LET %履歴 内の[ ~index ~EQ %index ]なる~entry ◎ Let specified entry be the entry in the joint session history whose index is the sum of delta and the index of the current entry of the joint session history.
  5. %B ~LET %~entry の文書が`属する閲覧文脈$ ◎ Let specified browsing context be the browsing context of the specified entry.
  6. ~IF[ %B にて`作動中の文書$において、現在,`文書を~unload$する~algoは走っている ] ⇒ ~RET ◎ If the specified browsing context's active document's unload a document algorithm is currently running, abort these steps.
  7. 次のようにされた`~taskを待入する$:

    • 関連する`~event-loop$: %B にて`作動中の文書$のそれ
    • `~task源$: `履歴~走査~task源$
    • 走らす手続き: 下に与える手続き
    ◎ Queue a task that consists of running the following substeps. The relevant event loop is that of the specified browsing context's active document. The task source for the queued task is the history traversal task source.

    手続きは次で与えられる:

    1. ~IF[ %B を~navigateしようとする進行中の試みがある ]~AND[ %B はまだ`成熟-$していない(すなわち、 %B はまだ,その`文書$を`作動中$にする段を~~終えていない) ] ⇒ その試みを取消す ◎ If there is an ongoing attempt to navigate specified browsing context that has not yet matured (i.e. it has not passed the point of making its Document the active document), then cancel that attempt to navigate the browsing context.
    2. %文書 ~LET %B にて`作動中の文書$ ◎ ↓
    3. ~IF[ %文書 ~NEQ %~entry の`文書$ ]: ◎ If the specified browsing context's active document is not the same Document as the Document of the specified entry, then run these substeps:

      1. %文書 の`~unloadを~prompt$する ⇒ ~IF[ 利用者は %文書 の`~unloadを拒否-$した ] ⇒ ~RET ◎ Prompt to unload the active document of the specified browsing context. If the user refused to allow the document to be unloaded, then abort these steps.
      2. [ %recycle ~SET ~F ]の下で, %文書 を`~unload$する ◎ Unload the active document of the specified browsing context with the recycle parameter set to false.
    4. %~entry へ %B の`履歴を走査する$ ◎ Traverse the history of the specified browsing context to the specified entry.

利用者が`閲覧文脈$を通して~navigateするとき(例えば~browserの戻る/進む~buttonを利用して)、~UAは,利用者により指定される動作に等価な分だけ`履歴を前/後に走査する$ことが要求される。 ◎ When the user navigates through a browsing context, e.g. using a browser's back and forward buttons, the user agent must traverse the history by a delta equivalent to the action specified by the user.


`pushState(data, title, url)@m
`replaceState(data, title, url)@m
`pushState()^m は、状態~obj~entryを履歴に追加する。 ◎ The pushState(data, title, url) method adds a state object entry to the history.
`replaceState()^m は、履歴~内の`現在の~entry$の[ 状態~obj, ~title, ( %url が与えられていれば)`~URL$ ]を更新する。 ◎ The replaceState(data, title, url) method updates the state object, title, and optionally the URL of the current entry in the history.

これらの~methodの被呼出時には、次の手続きを走らせ~MUST: ◎ When either of these methods is invoked, the user agent must run the following steps:

  1. %文書 ~LET 此れを結付けている`文書$ ◎ Let document be the unique Document object this History object is associated with.
  2. ~IF[ %文書 は`全部的に作動中$でない ] ⇒ ~THROW `SecurityError$E ◎ If document is not fully active, throw a "SecurityError" DOMException.
  3. ~UAの任意選択で ⇒ ~RET

    (例えば~UAは、これらの~methodの~callを,[ ~timer / 利用者による明白な動作に呼応して誘発されたものではない~event~listener ]によるものである場合や, 立て続けに呼出された場合には、不許可にできる。)

    ◎ Optionally, abort these steps. (For example, the user agent might disallow calls to these methods that are invoked on a timer, or from event listeners that are not triggered in response to a clear user action, or that are invoked in rapid succession.)
  4. %宛先~Realm ~LET 此れに`関連する~Realm$ ◎ Let targetRealm be this History object's relevant Realm.
  5. `直列形の~data^V ~LET `StructuredSerializeForStorage$jA( %data ) (例外投出あり) ◎ Let serializedData be StructuredSerializeForStorage(data). Rethrow any exceptions.
  6. %新~URL ~LET ε ◎ ↓
  7. ~IF[ %url ~NEQ ~NULL ]: ◎ If the third argument is not null, run these substeps:

    1. %新~URL ~SET %url を,此れに`関連する設定群~obj$に`相対的に構文解析-$した`結果の~URL~record$ ◎ Parse the value of the third argument, relative to the relevant settings object of this History object.
    2. ~IF[ %新~URL ~EQ ~error ] ⇒ ~THROW `SecurityError$E ◎ If that fails, throw a "SecurityError" DOMException and abort these steps. ◎ Let new URL be the resulting URL record.
    3. %文書~URL ~LET %文書 の`~URL$doc ◎ ↓
    4. ~IF[ 次のいずれかが満たされる ] ⇒ ~THROW `SecurityError$E : ◎ ↓

      • [ %新~URL, %文書~URL ]の[ `~path$url, `~query$url, `素片$url ]以外のある成分が相違する ◎ Compare new URL to document's URL. If any component of these two URL records differ other than the path, query, and fragment components, then throw a "SecurityError" DOMException and abort these steps.
      • 次の両者が満たされる:

        • [ %新~URL の`生成元$url ]~NEQ`生成元$sub[ %文書 の`生成元$ ]
        • [ %新~URL, %文書~URL ]の[ `~path$url, `~query$url ]いずれかの成分は相違する

        (これは、~sandbox化された内容が 同一生成元~上の他の頁を偽装することを防止する。)

        ◎ If the origin of new URL is not same origin with the origin of document, and either the path or query components of the two URL records compared in the previous step differ, throw a "SecurityError" DOMException and abort these steps. (This prevents sandboxed content from spoofing other pages on the same origin.)
  8. %履歴 ~LET %文書 が`属する閲覧文脈$の`~session履歴$ ◎ ↓
  9. %現~entry ~LET %履歴 内の`現在の~entry$ ◎ ↓
  10. ~IF[ %url ~EQ ~NULL ] ⇒ %新~URL ~SET %現~entry の`~URL$ ◎ If the third argument is null, then let new URL be the URL of the current entry.
  11. ~IF[ 呼出された~methodは `pushState()$m である ]: ◎ If the method invoked was the pushState() method:

    1. %履歴 内に %現~entry より後に~entryがあれば,それらすべてを除去する ◎ Remove all the entries in the browsing context's session history after the current entry. If the current entry is the last entry in the session history, then no entries are removed.

      注記: これは、~UAの~UIに 影響するとは限らない。 ◎ This doesn't necessarily have to affect the user agent's user interface.

    2. ~FOR `~top-level閲覧文脈$の`文書~族$内の~EACH ( 文書 %D )に対し ⇒ `履歴~走査~task源$から待入された`~task$のうち, %D に結付けられているものすべてを除去する ◎ Remove any tasks queued by the history traversal task source that are associated with any Document objects in the top-level browsing context's document family.
    3. 適切になるなら、~UAが持続化しようと望む状態を反映するように, %現~entry を更新する — この~entryは、`持続的~利用者~状態を伴う$ものとされる。 ◎ If appropriate, update the current entry to reflect any state that the user agent wishes to persist. The entry is then said to be an entry with persisted user state.
    4. %新~entry ~LET 新たな~entry ◎ ↓
    5. %新~entry の~scroll復旧~mode ~SET %現~entry の`~scroll復旧~mode$ ◎ ↓
    6. %新~entry を %履歴 の中の %現~entry の後に追加する ◎ ↓
    7. %履歴 の`現在の~entry$ ~SET %新~entry ◎ ↓
    8. %現~entry ~SET %新~entry ◎ Add a session history entry entry to the session history, after the current entry, with serializedData as the serialized state, the given title as the title, new URL as the URL of the entry, and the scroll restoration mode of the current entry in the session history as the scroll restoration mode. ◎ Update the current entry to be this newly added entry.
  12. %現~entry を次のように更新する:

    • `直列形の状態$ ~SET `直列形の~data^V
    • ~title ~SET %title
    • `~URL$ ~SET %新~URL
    ◎ Otherwise, if the method invoked was the replaceState() method: ◎ Update the current entry in the session history so that serializedData is the entry's new serialized state, the given title is the new title, and new URL is the entry's new URL.
  13. ~IF[ %現~entry は非 `GET^h 要請を表現する(例: それは `POST^h 提出の結果であった) ] ⇒ %現~entry を `GET^h 要請を表現するものに更新する ◎ If the current entry in the session history represents a non-GET request (e.g. it was the result of a POST submission) then update it to instead represent a GET request.
  14. %文書 の`~URL$doc ~SET %新~URL ◎ Set document's URL to new URL.

    注記: これは,[ `閲覧文脈$の`~navi$ / `履歴の走査$ ]ではないので、 `hashchange$et ~eventは発火されない。 ◎ Since this is neither a navigation of the browsing context nor a history traversal, it does not cause a hashchange event to be fired.

  15. 此れの `state$m 属性 ~SET `StructuredDeserialize$jA( `直列形の~data^V, %宛先~Realm ) — ただし,例外が投出された場合は ~NULL (再~投出しない) ◎ Let state be StructuredDeserialize(serializedData, targetRealm). If this throws an exception, ignore the exception and set state to null. ◎ Set history.state to state.
  16. %現~entry の`文書$の`最近の~entry$ ~SET %現~entry ◎ Set the current entry's Document object's latest entry to the current entry.

注記: %title は、もっぱら助言的でしかない。 ~UAは,~titleを~UIに利用するかもしれない。 ◎ The title is purely advisory. User agents might use the title in the user interface.

~UAは、頁ごとに,その~session履歴に追加される状態~objの個数を制限してよい。 頁がこの制限-に抵触した場合、~UAは,新たな~entryが追加された後に,[ その~session履歴~内の~entryのうち,[ 当の`文書$ `新たな~entryの文書?^tnote に対する最初の~entry ]の直後の~entryを除去し~MUST(したがって,状態~履歴は、先に入れたものから抹消されるように動作する( FIFO )一方で、~naviに対しては,先に入れたものが最後に残るように動作する( LIFO ))。 ◎ User agents may limit the number of state objects added to the session history per page. If a page hits the UA-defined limit, user agents must remove the entry immediately after the first entry for that Document object in the session history after having added the new entry. (Thus the state history acts as a FIFO buffer for eviction, but as a LIFO buffer for navigation.)

~gameを考える: 利用者は常に,ある “線” 上のある座標に位置していて、線に沿って~navigateでき、特定0の座標に対応する頁を~bookmarkすれば後でそこへ戻れるとする。 ◎ Consider a game where the user can navigate along a line, such that the user is always at some coordinate, and such that the user can bookmark the page corresponding to a particular coordinate, to return to it later.

そのような~gameの,位置 x=5 を実装している静的な頁として、次の様なものがあるとする: ◎ A static page implementing the x=5 position in such a game could look like the following:

<!DOCTYPE HTML>
<!-- ここは https://example.com/line?x=5 -->
<html lang="ja">
<title>Line Game - 5</title>
<p>あなたは線~上の座標 5 に居ます。</p>
<p>
 <a href="?x=6">6 へ進む</a> ・
 <a href="?x=4">4 へ戻る</a>
</p>

そのような~systemにおいて問題になるのは、利用者が~clickするたびに,頁~全体の再読込みを要することである。 次に、~scriptを利用して同じことをする別の仕方を示す: ◎ The problem with such a system is that each time the user clicks, the whole page has to be reloaded. Here instead is another way of doing it, using script:

<!DOCTYPE HTML>
<!-- ここは https://example.com/line?x=5 -->
<html lang="ja">
<title>Line Game - 5</title>
<p>あなたは線~上の座標 <span id="coord">5</span> に居ます。</p>
<p>
 <a href="?x=6"
   onclick="go(1); return false;"
 >6 へ進む</a> ・
 <a href="?x=4"
   onclick="go(-1); return false;"
 >4 へ戻る</a>
</p>
<script>
 var %currentPage = 5; /* ~serverからあてがわれる
◎
prefilled by server
 */
 function go(%d) {
   setupPage(%currentPage + %d);
   history.pushState(%currentPage, document.title, '?x=' + %currentPage);
 }
 onpopstate = function(%event) {
   setupPage(%event.state);
 }
 function setupPage(%page) {
   %currentPage = %page;
   document.title = 'Line Game - ' + %currentPage;
   document.getElementById('coord').textContent = %currentPage;
   document.links[0].href = '?x=' + (%currentPage + 1);
   document.links[0].textContent = 'Advance to ' + (%currentPage + 1);
   document.links[1].href = '?x=' + (%currentPage - 1);
   document.links[1].textContent = 'retreat to ' + (%currentPage - 1);
 }
</script>

これは、~scriptの~supportを切っている~systemにおいても,依然として先掲の例の様に働くが、 切っていない 利用者は,ずっと高速に~navigateできるようになる — 同じ体験に対し~network~accessはないので。 更には、~scriptに基づく素朴な~approachによる利用者~体験と違って,~session履歴を ~bookmarkする/~navigateする のも依然として働く。 ◎ In systems without script, this still works like the previous example. However, users that do have script support can now navigate much faster, since there is no network access for the same experience. Furthermore, contrary to the experience the user would have with just a naïve script-based approach, bookmarking and navigating the session history still work.

上の例において、 `pushState()$m ~methodに対する %data 引数は,~serverへ送信されることになる情報と同じになるが、利用者が~navigateするたびに~scriptが~URLを構文解析しなくとも済むような,より簡便な形になる。 ◎ In the example above, the data argument to the pushState() method is the same information as would be sent to the server, but in a more convenient form, so that the script doesn't have to parse the URL each time the user navigates.


~appは、その時点の`~session履歴~entry$に対する~titleに,文書の `title$e 要素の値と同じ値を利用しないこともできる。 例えばここに、 `title$e 要素~内に,ある~blockを示す単純な頁があるとする。 ~navigateして以前の状態に後戻しても,利用者の時間は後戻しないので、~session履歴~title内に時刻を入れるのは不適切になるであろう。 ◎ Applications might not use the same title for a session history entry as the value of the document's title element at that time. For example, here is a simple page that shows a block in the title element. Clearly, when navigating backwards to a previous state the user does not go back in time, and therefore it would be inappropriate to put the time in the session history title.

<!DOCTYPE HTML>
<HTML LANG=EN>
<TITLE>Line</TITLE>
<SCRIPT>
 setInterval(function () {
   document.title = 'Line - ' + new Date();
 }, 1000);
 var %i = 1;
 function inc() {
   set(%i+1);
   history.pushState(%i, 'Line - ' + i);
 }
 function set(%newI) {
   %i = %newI;
   document.forms.F.I.value = %newI;
 }
</SCRIPT>
<BODY ONPOPSTATE="set(%event.state)">
<FORM NAME=F>
   State:
   <OUTPUT NAME=I>1</OUTPUT>
   <INPUT VALUE="Increment" TYPE=BUTTON ONCLICK="inc()">
</FORM>

ほとんどの~appは、自身の履歴~entryのすべてに対し,同じ`~scroll復旧~mode$値を利用したいと求める。 そのためには、できるだけ早く `scrollRestoration$m 属性を設定して(例えば、文書の `head$e 要素~内の `script$e 要素で),[ 履歴~sessionに追加された~entryが,欲される~scroll復旧~modeを取得する ]ことを確保することにより,達成できる。 ◎ Most applications want to use the same scroll restoration mode value for all of their history entries. To achieve this they can set the scrollRestoration attribute as soon as possible (e.g., in the first script element in the document's head element) to ensure that any entry added to the history session gets the desired scroll restoration mode.

<head>
  <script>
       if ('scrollRestoration' in history)
            history.scrollRestoration = 'manual';
  </script>
</head>

7.7.3. ~session履歴に対する実装~上の注記

~INFORMATIVE

`History$I ~interfaceは、実装が~session履歴を利用者に向けてどう表現するかについて制約を課すものではない。 ◎ The History interface is not meant to place restrictions on how implementations represent the session history to the user.

例えば~session履歴を,各~頁が,複数の “~~前方へ~~枝分かれする” 頁を持つ様な方式で実装することもできる。 この仕様は、 `history$m ~obj内の各~頁からなる一本道の~listが利用者からどう見えるかについて,実際の~session履歴から導出する方法は定義しない。 ◎ For example, session history could be implemented in a tree-like manner, with each page having multiple "forward" pages. This specification doesn't define how the linear list of pages in the history object are derived from the actual session history as seen from the user's perspective.

同様に,ある頁が二つの `iframe$e を包含しているとき,頁は各 `iframe$e の `history$m ~objとは別個の `history$m ~objを持つ — [ 二つの内縁~frameと外縁~頁の~navi ]を互いに差挟むような~session履歴を伴うような。 代表的な~Web~browserは、利用者に一つしか “戻る” ~buttonを呈示しない事実があるにもかかわらず。 ◎ Similarly, a page containing two iframes has a history object distinct from the iframes' history objects, despite the fact that typical Web browsers present the user with just one "Back" button, with a session history that interleaves the navigation of the two inner frames and the outer page.

保安: ある頁が `pushState()$m を濫用して,~UAの履歴~navi便宜性を “乗っ取る” のを避けるため、~UAには,以前の頁へ一足飛びに戻る仕方を利用者に提供することが示唆される(単に一つ前の状態へ後戻するのでなく)。 例えば、戻る~buttonは,~session履歴~内の頁たちだけを示し,他のどの状態も示さないような ~drop-downを持たせることもできる。 同様に,聴覚~browserは、二つ前へ “戻る” ~command — 一つ前の状態へ後戻するもの, 以前の頁へ一足飛びに戻るもの — を持たせることもできる。 ◎ Security: It is suggested that to avoid letting a page "hijack" the history navigation facilities of a UA by abusing pushState(), the UA provide the user with a way to jump back to the previous page (rather than just going back to the previous state). For example, the back button could have a drop down showing just the pages in the session history, and not showing any of the states. Similarly, an aural browser could have two "back" commands, one that goes back to the previous state, and one that jumps straight back to the previous page.

`pushState()$m, `replaceState()$m いずれに対しても,~UAには、頻繁過ぎる~callや巨大過ぎる状態~objを介するような, これらの~APIの濫用-を防止することが奨励される。 上に詳細を与えたように,~algoでは、適切になるときは,~UAがそのような~callを無視することも 明示的に許容されている。 ◎ For both pushState() and replaceState(), user agents are encouraged to prevent abuse of these APIs via too-frequent calls or over-large state objects. As detailed above, the algorithm explicitly allows user agents to ignore any such calls when appropriate.

7.7.4. `Location^I ~interface

各 `~window$には、その作成-時に,新たな `Location$I ~objが結付けられる。

【 以下,ここでは、この節の内容のうち,~APIに関する部分のみ述べる。 他の内容は、 別ページ にて。 】

%document . `~location0$m [ = %value ]
%window . `location$m [ = %value ]
現在の頁の所在を伴う `Location$I ~objを返す。 ◎ Returns a Location object with the current page's location.
設定して,別の頁へ~navigateできる。 ◎ Can be set, to navigate to another page.
`document.location@m
取得子は、[ 此れが`全部的に作動中$ならば,此れに`関連する大域~obj$の `Location$I ~obj / ~ELSE_ ~NULL ]を返さ~MUST。 ◎ The Document object's location attribute's getter must return this Document object's relevant global object's Location object, if this Document object is fully active, and null otherwise.
`window.location@m
取得子は、此れの `Location$I ~objを返さ~MUST。 ◎ The Window object's location attribute's getter must return this Window object's Location object.

`Location$I ~objは、それに`対応する閲覧文脈$Locにて`作動中の文書$の`~URL$docを表現し、`閲覧文脈$の~session履歴の`現在の~entry$を, `history$m ~obj内[ に~entryを追加する / の~entryを置換する ]ことを通して 変更できるようにする。 ◎ Location objects provide a representation of the URL of the active document of their Document's browsing context, and allow the current entry of the browsing context's session history to be changed, by adding or replacing entries in the history object.

[Unforgeable] interface `Location@I { /* 
ただし、
追加の作成~手続き上書きされた内部~method
も見よ。
◎
but see also additional creation steps and overridden internal methods
 */

  [Unforgeable] stringifier attribute USVString `href$m;
  [Unforgeable] readonly attribute USVString `origin$m;
  [Unforgeable] attribute USVString `protocol$m;
  [Unforgeable] attribute USVString `host$m;
  [Unforgeable] attribute USVString `hostname$m;
  [Unforgeable] attribute USVString `port$m;
  [Unforgeable] attribute USVString `pathname$m;
  [Unforgeable] attribute USVString `search$m;
  [Unforgeable] attribute USVString `hash$m;

  [Unforgeable] void `assign$m(USVString %url);
  [Unforgeable] void `replace$m(USVString %url);
  [Unforgeable] void `reload$m();

  [Unforgeable, SameObject] readonly attribute `DOMStringList$I `ancestorOrigins$m;
};
%location . `toString()^m
%location . `href$m
`~url$Locを返す。 ◎ Returns the Location object's URL.
設定して,所与の~URLへ~navigateできる。 ◎ Can be set, to navigate to the given URL.
%location . `origin$m
`~url$Locの生成元を返す。 ◎ Returns the Location object's URL's origin.
%location . `protocol$m
`~url$Locの~schemeを返す。 ◎ Returns the Location object's URL's scheme.
設定して,`~url$Locの~schemeだけ変更した~URLへ~navigateできる。 ◎ Can be set, to navigate to the same URL with a changed scheme.
%location . `host$m
`~url$Locの[ ~host, ~port(~schemeに対する`既定の~port$urlと異なるならば) ]を返す。 ◎ Returns the Location object's URL's host and port (if different from the default port for the scheme).
設定して,`~url$Locの ~host, ~port だけ変更した~URLへ~navigateできる。 ◎ Can be set, to navigate to the same URL with a changed host and port.
%location . `hostname$m
`~url$Locの~hostを返す。 ◎ Returns the Location object's URL's host.
設定して,`~url$Locの~hostだけ変更した~URLへ~navigateできる。 ◎ Can be set, to navigate to the same URL with a changed host.
%location . `port$m
`~url$Locの~port を返す。 ◎ Returns the Location object's URL's port.
設定して,`~url$Locの~portだけ変更した~URLへ~navigateできる。 ◎ Can be set, to navigate to the same URL with a changed port.
%location . `pathname$m
`~url$Locの~path を返す。 ◎ Returns the Location object's URL's path.
設定して,`~url$Locの~pathだけ変更した~URLへ~navigateできる。 ◎ Can be set, to navigate to the same URL with a changed path.
%location . `search$m
`~url$Locの~queryを返す(空でないならば 先頭の `?^l も含する)。 ◎ Returns the Location object's URL's query (includes leading "?" if non-empty).
設定して,`~url$Locの~query(先頭の `?^l は無視する)だけ変更した~URLへ~navigateできる。 ◎ Can be set, to navigate to the same URL with a changed query (ignores leading "?").
%location . `hash$m
`~url$Locの素片を返す(空でないならば 先頭の `#^l を含する)。 ◎ Returns the Location object's URL's fragment (includes leading "#" if non-empty).
設定して,`~url$Locの素片(先頭の `#^l は無視する)だけ変更した~URLへ~navigateできる。 ◎ Can be set, to navigate to the same URL with a changed fragment (ignores leading "#").
%location . `assign$m(%url)
%url へ~navigateする。 ◎ Navigates to the given URL.
%location . `replace$m(%url)
~session履歴から現在の頁を除去した上で,所与の %url へ~navigateする。 ◎ Removes the current page from the session history and navigates to the given URL.
%location . `reload$m()
現在の頁を再読込みする。 ◎ Reloads the current page.
%location . `ancestorOrigins$m
`親~閲覧文脈$から`~top-level閲覧文脈$までの各[ 先祖`閲覧文脈$の生成元の値 ]からなる, `DOMStringList$I ~objを返す。 ◎ Returns a DOMStringList object listing the origins of the ancestor browsing contexts, from the parent browsing context to the top-level browsing context. Returns an array whose values are

各 `Location$I ~obj %L には、次が定義される: ◎ ↓

`対応する閲覧文脈@Loc
%L を結付けている`~window$に`対応する閲覧文脈$を指す。
【 この定義は、訳者の推定による。 原文では, “%L の文書の閲覧文脈” あるいは単に “the 閲覧文脈” 等々としか記されていないが、 %L は`~window$に結付けられるものと定義されているので。 】
`関連する文書@Loc
%L に`対応する閲覧文脈$Locにて`作動中の文書$を指す。 ◎ A Location object has an associated relevant Document, which is this Location object's associated Document object's browsing context's active document.
`~url@Loc
%L に`関連する文書$Locの`~URL$docを指す。 ◎ A Location object has an associated url, which is this Location object's relevant Document's address.
`先祖~生成元~list@

%L の作成-時に,次の手続きから得られる文字列の~listが結付けられた `DOMStringList$I ~objに設定され~MUST: ◎ A Location object has an associated ancestor origins list. When a Location object is created, its ancestor origins list must be set to a DOMStringList object whose associated list is the list of strings that the following steps would produce:

  1. %~list ~LET 新たな空`~list$ ◎ Let output be a new list of strings.
  2. %L に`対応する閲覧文脈$Loc %B の ~EACH( `先祖~閲覧文脈$ %先祖 ) に対し, %B に近い先祖から順に ⇒ [[[ %先祖 にて`作動中の文書$ ]の`生成元$ ]の`直列化$o ]を %~list に`付加-$する ◎ Let current be the browsing context of the Document with which this Location object is associated. ◎ Loop: If current has no parent browsing context, jump to the step labeled end. ◎ Let current be current's parent browsing context. ◎ Append the serialization of current's active document's origin to output. ◎ Return to the step labeled loop.
  3. ~RET %~list ◎ End: Return output.
【 `ancestorOrigins$m のみから利用される。 】

`~Location~obj設定子により~navigateする@ ときは、所与の ( `Location$I ~obj %L, `~URL~record$ %url ) に対し,次を走らす: ◎ A Location object has an associated Location-object-setter navigate algorithm, which given a url, runs these steps:

  1. `置換え~flag^V ~LET[ 次のいずれかが満たされるならば ~OFF / ~ELSE_ ~ON ]: ◎ If any of the following conditions are met, let replacement flag be unset; otherwise, let it be set:

    • %L に`関連する文書$Locは、`完全に読込まれ$ている ◎ This Location object's relevant Document has completely loaded, or
    • この~algoを走らせている`~task$は、次を満たす~eventに対する[ `作動化の挙動$を現在~処理して / ~event~listenerを取扱って ]いる ⇒ 名前 `click$et ~AND `isTrusted$m ~EQ ~T ◎ In the task in which the algorithm is running, an activation behavior is currently being processed whose click event's isTrusted attribute is true, or ◎ In the task in which the algorithm is running, the event listener for a click event, whose isTrusted attribute is true, is being handled.
  2. 次を与える下で,`~Location~objにより~navigateする$ ⇒ ( %L, %url, `置換え~flag^V ) ◎ Location-object navigate, given url and replacement flag.

`~Location~objにより~navigateする@ ときは、所与の ( `Location$I ~obj %L, `~URL~record$ %url, `置換え~flag^V ) に対し,次を走らす: ◎ To Location-object navigate, given a url and replacement flag, run these steps:

  1. %B ~LET %L に`対応する閲覧文脈$Loc ◎ ↓
  2. 次を与える下で, %url へ %B を`~navigate$する(例外投出あり):

    • `~source閲覧文脈$は、`現任の設定群~obj$により指定される`担当の閲覧文脈$enV
    • `例外~可能化~flag$ ~SET ~ON
    • 次のいずれかに該当する場合は、`置換え可能化~flag$ ~SET ~ON:

      • `置換え~flag^V ~EQ ~ON
      • %B の`~session履歴$は、 %B の作成-時に作成された `about_blank$sc `文書$のみからなる
    ◎ • The source browsing context is the responsible browsing context specified by the incumbent settings object. • Navigate the browsing context to url, with the exceptions enabled flag set. Rethrow any exceptions. • If the replacement flag is set or the browsing context's session history contains only one Document, and that was the about:blank Document created when the browsing context was created, then the navigation must be done with replacement enabled.

`Location$I ~obj %L の `生成元~domainを検査する@ ときは、次を走らす:

  1. ~IF[ %L に`関連する文書$Locの`生成元$ ~NEQ`~domain$sub `入口~設定群~obj$の`生成元$enV ] ⇒ ~THROW `SecurityError$E

【 この手続きは、以下を簡潔に記すためにこの訳に導入したもの。 】

`href@m

取得子は、次の手続きを走らせ~MUST: ◎ The href attribute's getter must run these steps:

  1. 此れの`生成元~domainを検査する$ ◎ If this Location object's relevant Document's origin is not same origin-domain with the entry settings object's origin, then throw a "SecurityError" DOMException.
  2. ~RET 此れが指す`~url$Locを`~URL直列化器$にかけた結果 ◎ Return this Location object's url, serialized.

設定子は、次の手続きを走らせ~MUST: ◎ The href attribute's setter must run these steps:

  1. %~URL~record ~LET 所与の値を,`入口~設定群~obj$に`相対的に構文解析-$した`結果の~URL~record$ ◎ Parse the given value relative to the entry settings object. If that failed, throw a TypeError exception.
  2. ~IF[ %~URL~record ~EQ ~error ] ⇒ ~THROW `TypeError$E ◎ ↑
  3. 次を与える下で,`~Location~obj設定子により~navigateする$ ⇒ ( 此れ, %~URL~record ) ◎ Location-object-setter navigate to the resulting URL record.
注記: `href$m 属性~設定子に対しては、意図的に保安~検査は行われない。 ◎ The href attribute setter intentionally has no security check.
`origin@m

取得子は、次の手続きを走らせ~MUST: ◎ The origin attribute's getter must run these steps:

  1. 此れの`生成元~domainを検査する$ ◎ If this Location object's relevant Document's origin is not same origin-domain with the entry settings object's origin, then throw a "SecurityError" DOMException.
  2. ~RET 此れが指す`~url$Locの`生成元$urlの`直列化$o ◎ Return the serialization of this Location object's url's origin.
`protocol@m

取得子は、次の手続きを走らせ~MUST: ◎ The protocol attribute's getter must run these steps:

  1. 此れの`生成元~domainを検査する$ ◎ If this Location object's relevant Document's origin is not same origin-domain with the entry settings object's origin, then throw a "SecurityError" DOMException.
  2. ~RET 次を順に連結した結果 ⇒ 此れが指す`~url$Locの`~scheme$url,
    `:^l ◎ Return this Location object's url's scheme, followed by ":".

設定子は、次の手続きを走らせ~MUST: ◎ The protocol attribute's setter must run these steps:

  1. 此れの`生成元~domainを検査する$ ◎ If this Location object's relevant Document's origin is not same origin-domain with the entry settings object's origin, then throw a "SecurityError" DOMException.
  2. %複製~URL ~LET 此れが指す`~url$Locの複製 ◎ Let copyURL be a copy of this Location object's url.
  3. %~protocol文字列 ~LET 次を順に連結した結果 ⇒ 所与の値,
    `:^l ◎ ↓
  4. %possibleFailure ~LET 次を与える下で, %~protocol文字列 を`基本~URL構文解析器$にかけた結果 ⇒ ~URLと上書stateの組: ( %複製~URL, `~scheme開始-~state$url ) ◎ Let possibleFailure be the result of basic URL parsing the given value, followed by ":", with copyURL as url and scheme start state as state override.

    注記: ~URL構文解析器は,連続する~colonを無視するので、値に `https:^l を与えても(あるいは `https::::^l でさえ), `https^l を与えるのと同じことになる。 ◎ Because the URL parser ignores multiple consecutive colons, providing a value of "https:" (or even "https::::") is the same as providing a value of "https".

  5. ~IF[ %possibleFailure ~EQ `失敗^i ] ⇒ ~THROW `SyntaxError$E ◎ If possibleFailure is failure, then throw a "SyntaxError" DOMException.
  6. ~IF[ %複製~URL の `~scheme$urlは`~HTTP_S~scheme$である ] ⇒ ~RET ◎ If copyURL's scheme is not an HTTP(S) scheme, then terminate these steps.
  7. 次を与える下で,`~Location~obj設定子により~navigateする$ ⇒ ( 此れ, %複製~URL ) ◎ Location-object-setter navigate to copyURL.
`host@m

取得子は、次の手続きを走らせ~MUST: ◎ The host attribute's getter must run these steps:

  1. 此れの`生成元~domainを検査する$ ◎ If this Location object's relevant Document's origin is not same origin-domain with the entry settings object's origin, then throw a "SecurityError" DOMException.
  2. %url ~LET 此れが指す`~url$Loc ◎ Let url be this Location object's url.
  3. ~IF[ %url の`~host$url ~EQ ~NULL ] ⇒ ~RET 空~文字列 ◎ If url's host is null, return the empty string.
  4. %~host文字列 ~LET %url の`~host$urlを`~host直列化器$にかけた結果 ◎ ↓
  5. ~IF[ %url の`~port$url ~EQ ~NULL ] ⇒ ~RET %~host文字列 ◎ If url's port is null, return url's host, serialized.
  6. ~RET 次を順に連結した結果 ⇒ %~host文字列,
    `:^l,
    %url の`~port$urlを`整数として直列化-$urlした結果 ◎ Return url's host, serialized, followed by ":" and url's port, serialized.

設定子は、次の手続きを走らせ~MUST: ◎ The host attribute's setter must run these steps:

  1. 此れの`生成元~domainを検査する$ ◎ If this Location object's relevant Document's origin is not same origin-domain with the entry settings object's origin, then throw a "SecurityError" DOMException.
  2. %複製~URL ~LET 此れが指す`~url$Locの複製 ◎ Let copyURL be a copy of this Location object's url.
  3. ~IF[ %複製~URL の`~cannot-be-a-base-URL~flag$ ~EQ ~ON ] ⇒ ~RET ◎ If copyURL's cannot-be-a-base-URL flag is set, terminate these steps.
  4. 次を与える下で,所与の値を`基本~URL構文解析器$にかける ⇒ ~URLと上書stateの組: ( %複製~URL, `~host~state$url ) ◎ Basic URL parse the given value, with copyURL as url and host state as state override.
  5. 次を与える下で,`~Location~obj設定子により~navigateする$ ⇒ ( 此れ, %複製~URL ) ◎ Location-object-setter navigate to copyURL.
`hostname@m

取得子は、次の手続きを走らせ~MUST: ◎ The hostname attribute's getter must run these steps:

  1. 此れの`生成元~domainを検査する$ ◎ If this Location object's relevant Document's origin is not same origin-domain with the entry settings object's origin, then throw a "SecurityError" DOMException.
  2. ~IF[ 此れが指す`~url$Locの `~host$url ~EQ ~NULL ] ⇒ ~RET 空~文字列 ◎ If this Location object's url's host is null, return the empty string.
  3. ~RET 此れが指す`~url$Locの`~host$urlを`~host直列化器$にかけた結果 ◎ Return this Location object's url's host, serialized.

設定子は、次の手続きを走らせ~MUST: ◎ The hostname attribute's setter must run these steps:

  1. 此れの`生成元~domainを検査する$ ◎ If this Location object's relevant Document's origin is not same origin-domain with the entry settings object's origin, then throw a "SecurityError" DOMException.
  2. %複製~URL ~LET 此れが指す`~url$Locの複製 ◎ Let copyURL be a copy of this Location object's url.
  3. ~IF[ %複製~URL の`~cannot-be-a-base-URL~flag$ ~EQ ~ON ] ⇒ ~RET ◎ If copyURL's cannot-be-a-base-URL flag is set, terminate these steps.
  4. 次を与える下で,所与の値を`基本~URL構文解析器$にかける ⇒ ~URLと上書stateの組: ( %複製~URL, `~hostname~state$url ) ◎ Basic URL parse the given value, with copyURL as url and hostname state as state override.
  5. 次を与える下で,`~Location~obj設定子により~navigateする$ ⇒ ( 此れ, %複製~URL ) ◎ Location-object-setter navigate to copyURL.
`port@m

取得子は、次の手続きを走らせ~MUST: ◎ The port attribute's getter must run these steps:

  1. 此れの`生成元~domainを検査する$ ◎ If this Location object's relevant Document's origin is not same origin-domain with the entry settings object's origin, then throw a "SecurityError" DOMException.
  2. ~IF[ 此れが指す`~url$Locの `~port$url ~EQ ~NULL ] ⇒ ~RET 空~文字列 ◎ If this Location object's url's port is null, return the empty string.
  3. ~RET 此れが指す`~url$Locの`~port$urlを`整数として直列化-$urlした結果 ◎ Return this Location object's url's port, serialized.

設定子は、次の手続きを走らせ~MUST: ◎ The port attribute's setter must run these steps:

  1. 此れの`生成元~domainを検査する$ ◎ If this Location object's relevant Document's origin is not same origin-domain with the entry settings object's origin, then throw a "SecurityError" DOMException.
  2. %複製~URL ~LET 此れが指す`~url$Locの複製 ◎ Let copyURL be a copy of this Location object's url.
  3. ~IF[ %複製~URL は `~username/~password/~portを持てない$ ] ⇒ ~RET ◎ If copyURL cannot have a username/password/port, then return.
  4. ~IF[ 所与の値 ~EQ 空~文字列 ] ⇒ %複製~URL の`~port$url ~SET ~NULL ◎ If the given value is the empty string, then set copyURL's port to null.
  5. ~ELSE ⇒ 次を与える下で,所与の値を`基本~URL構文解析器$にかける ⇒ ~URLと上書stateの組: ( %複製~URL, `~port~state$url ) ◎ Otherwise, basic URL parse the given value, with copyURL as url and port state as state override.
  6. 次を与える下で,`~Location~obj設定子により~navigateする$ ⇒ ( 此れ, %複製~URL ) ◎ Location-object-setter navigate to copyURL.
`pathname@m

取得子は、次の手続きを走らせ~MUST: ◎ The pathname attribute's getter must run these steps:

  1. 此れの`生成元~domainを検査する$ ◎ If this Location object's relevant Document's origin is not same origin-domain with the entry settings object's origin, then throw a "SecurityError" DOMException.
  2. %url ~LET 此れが指す`~url$Loc ◎ Let url be this Location object's url.
  3. ~IF[ %url の`~cannot-be-a-base-URL~flag$ ~EQ ~ON ] ⇒ ~RET %url の`~path$url内の最初の文字列 ◎ If url's cannot-be-a-base-URL flag is set, return the first string in url's path.
  4. ~IF[ %url の`~path$urlは空である ] ⇒ ~RET 空~文字列 ◎ If url's path is empty, then return the empty string.
  5. ~RET 次を順に連結した結果 ⇒ `/^l,
    [ %url の`~path$url内の各~文字列(空~文字列も含めて)を `/^l で区切って連結した結果 ] ◎ Return "/", followed by the strings in url's path (including empty strings), separated from each other by "/".

設定子は、次の手続きを走らせ~MUST: ◎ The pathname attribute's setter must run these steps:

  1. 此れの`生成元~domainを検査する$ ◎ If this Location object's relevant Document's origin is not same origin-domain with the entry settings object's origin, then throw a "SecurityError" DOMException.
  2. %複製~URL ~LET 此れが指す`~url$Locの複製 ◎ Let copyURL be a copy of this Location object's url.
  3. ~IF[ %複製~URL の`~cannot-be-a-base-URL~flag$ ~EQ ~ON ] ⇒ ~RET ◎ If copyURL's cannot-be-a-base-URL flag is set, terminate these steps.
  4. %複製~URL の`~path$url ~SET 空~list ◎ Set copyURL's path to the empty list.
  5. 次を与える下で,所与の値を`基本~URL構文解析器$にかける ⇒ ~URLと上書stateの組: ( %複製~URL, `~path開始-~state$url ) ◎ Basic URL parse the given value, with copyURL as url and path start state as state override.
  6. 次を与える下で,`~Location~obj設定子により~navigateする$ ⇒ ( 此れ, %複製~URL ) ◎ Location-object-setter navigate to copyURL.
`search@m

取得子は、次の手続きを走らせ~MUST: ◎ The search attribute's getter must run these steps:

  1. 此れの`生成元~domainを検査する$ ◎ If this Location object's relevant Document's origin is not same origin-domain with the entry settings object's origin, then throw a "SecurityError" DOMException.
  2. ~IF[ 此れが指す`~url$Locの`~query$url ~IN { ~NULL, 空~文字列 } ] ⇒ ~RET 空~文字列 ◎ If this Location object's url's query is either null or the empty string, return the empty string.
  3. ~RET 次を順に連結した結果 ⇒ `?^l,
    此れが指す`~url$Locの`~query$url ◎ Return "?", followed by this Location object's url's query.

設定子は、次の手続きを走らせ~MUST: ◎ The search attribute's setter must run these steps:

  1. 此れの`生成元~domainを検査する$ ◎ If this Location object's relevant Document's origin is not same origin-domain with the entry settings object's origin, then throw a "SecurityError" DOMException.
  2. %複製~URL ~LET 此れが指す`~url$Locの複製 ◎ Let copyURL be a copy of this Location object's url.
  3. ~IF[ 所与の値 ~EQ 空~文字列 ] ⇒ %複製~URL の`~query$url ~SET ~NULL ◎ If the given value is the empty string, set copyURL's query to null.
  4. ~ELSE: ◎ Otherwise, run these substeps:

    1. %入力 ~LET 所与の値 ◎ ↓
    2. ~IF[ %入力 の最初の文字 ~EQ `?^l ] ⇒ %入力 から最初の文字を除去する ◎ Let input be the given value with a single leading "?" removed, if any.
    3. %複製~URL の`~query$url ~SET 空~文字列 ◎ Set copyURL's query to the empty string.
    4. 次を与える下で,%入力 を`基本~URL構文解析器$にかける ⇒ ~URLと上書stateの組: ( %複製~URL, `~query~state$url ),
      `上書き符号化方式^V: 此れに`関連する文書$Locの`文字~符号化方式$doc ◎ Basic URL parse input, with copyURL as url and query state as state override, and the relevant Document's document's character encoding as encoding override.
  5. 次を与える下で,`~Location~obj設定子により~navigateする$ ⇒ ( 此れ, %複製~URL ) ◎ Location-object-setter navigate to copyURL.
`hash@m

取得子は、次の手続きを走らせ~MUST: ◎ The hash attribute's getter must run these steps:

  1. 此れの`生成元~domainを検査する$ ◎ If this Location object's relevant Document's origin is not same origin-domain with the entry settings object's origin, then throw a "SecurityError" DOMException.
  2. ~IF[ 此れが指す`~url$Locの`素片$url ~IN { ~NULL, 空~文字列 } ] ⇒ ~RET 空~文字列 ◎ If this Location object's url's fragment is either null or the empty string, return the empty string.
  3. ~RET 次を順に連結した結果 ⇒ `#^l,
    此れが指す`~url$Locの`素片$url ◎ Return "#", followed by this Location object's url's fragment.

設定子は、次の手続きを走らせ~MUST: ◎ The hash attribute's setter must run these steps:

  1. 此れの`生成元~domainを検査する$ ◎ If this Location object's relevant Document's origin is not same origin-domain with the entry settings object's origin, then throw a "SecurityError" DOMException.
  2. %複製~URL ~LET 此れが指す`~url$Locの複製 ◎ Let copyURL be a copy of this Location object's url.
  3. %入力 ~LET 所与の値 ◎ ↓
  4. ~IF[ %入力 の最初の文字 ~EQ `#^l ] ⇒ %入力 から最初の文字を除去する ◎ Let input be the given value with a single leading "#" removed, if any.
  5. %複製~URL の`素片$url ~SET 空~文字列 ◎ Set copyURL's fragment to the empty string.
  6. 次を与える下で, %入力 を`基本~URL構文解析器$にかける ⇒ ~URLと上書stateの組: ( %複製~URL, `素片~state$url ) ◎ Basic URL parse input, with copyURL as url and fragment state as state override.
  7. 次を与える下で,`~Location~obj設定子により~navigateする$ ⇒ ( 此れ, %複製~URL ) ◎ Location-object-setter navigate to copyURL.

注記: `a$e, `area$e 要素に対する等価な~APIと違って, `hash$m 属性の設定子は、[ 空~文字列を,配備済みの~scriptと互換にするよう特別に扱う ]ことはない。 ◎ Unlike the equivalent API for the a and area elements, the hash attribute's setter does not special case the empty string to remain compatible with deployed scripts.

`assign(url)@m

被呼出時には、次の手続きを走らせ~MUST: ◎ When the assign(url) method is invoked, the user agent must run the following steps:

  1. 此れの`生成元~domainを検査する$ ◎ If this Location object's relevant Document's origin is not same origin-domain with the entry settings object's origin, then throw a "SecurityError" DOMException.
  2. %~URL~record ~LET %url を,`入口~設定群~obj$に`相対的に構文解析-$した`結果の~URL~record$ ◎ Parse url relative to the entry settings object. If that failed, throw a "SyntaxError" DOMException.

    ~IF[ %~URL~record ~EQ ~error ] ⇒ ~THROW `SyntaxError$E ◎ ↑

  3. 次を与える下で,`~Location~objにより~navigateする$ ⇒ ( 此れ, %~URL~record ) ◎ Location-object navigate to the resulting URL record.
`replace(url)@m

被呼出時には、次の手続きを走らせ~MUST: ◎ When the replace(url) method is invoked, the user agent must run the following steps:

  1. %~URL~record ~LET %url を,`入口~設定群~obj$に`相対的に構文解析-$した`結果の~URL~record$ ◎ Parse url relative to the entry settings object. If that failed, throw a "SyntaxError" DOMException.
  2. ~IF[ %~URL~record ~EQ ~error ] ⇒ ~THROW `SyntaxError$E ◎ ↑
  3. 次を与える下で,`~Location~objにより~navigateする$ ⇒ ( 此れ, %~URL~record, ~ON ) ◎ Location-object navigate to the resulting URL record with the replacement flag set.
注記: `replace()$m ~methodに対しては、意図的に保安~検査は行われない。 ◎ The replace() method intentionally has no security check.
`reload()@m

被呼出時には、次の手続きを走らせ~MUST: ◎ When the reload() method is invoked, the user agent must run the appropriate steps from the following list:

  1. 此れの`生成元~domainを検査する$ ◎ If this Location object's relevant Document's origin is not same origin-domain with the entry settings object's origin • throw a "SecurityError" DOMException.
  2. %B ~LET 此れに`対応する閲覧文脈$Loc
  3. ~IF[ 現在~実行-中の`~task$†は、利用者による %B の~resizeに呼応して配送された `resize$et ~eventによるものである†† ] ⇒ %B を塗りなおす††† ◎ If the currently executing task is the dispatch of a resize event in response to the user resizing the browsing context • Repaint the browsing context and abort these steps.

    【† `現在~走っている~task$? 】【†† すなわち,この~methodが `resize^et ~event~handlerの中から呼出されたとき? 】【††† “repaint” — 単に再~描画するだけ? 】

  4. ~ELIF[ %B にて`作動中の文書$は`~iframe~srcdoc文書$である ] ⇒ %B の`閲覧文脈~容器$の ~iframe属性を再処理する ◎ If the browsing context's active document is an iframe srcdoc document • Reprocess the iframe attributes of the browsing context's browsing context container.
  5. ~ELIF[ %B にて`作動中の文書$の`再読込み上書き~flag$ ~EQ ~ON ] ⇒ %B を`担当の閲覧文脈$enV†とする下で,`上書きされた再読込み$を遂行する (例外投出あり) ◎ If the browsing context's active document has its reload override flag set • Perform an overridden reload, with the browsing context being navigated as the responsible browsing context. Rethrow any exceptions.

    【† `~source閲覧文脈$の誤記? 】

  6. ~ELSE ⇒ 次を与える下で, %B を此れが指す`~url$Locへ`~navigate$して(例外投出あり)、`閲覧文脈$の`現在の~entry$に対し`~entry更新-$を遂行する:

    • `例外~可能化~flag$ ~SET ~ON
    • `~source閲覧文脈$ ~SET %B

    この~naviは、`再読込みにより誘発され$たものとされる。

    ◎ Otherwise • Navigate the browsing context to this Location object's relevant Document's URL to perform an entry update of the browsing context's current entry, with the exceptions enabled flag set. The source browsing context must be the browsing context being navigated. This is a reload-triggered navigation. Rethrow any exceptions.

利用者から ~UI要素†を通して[ `閲覧文脈$ %B にて`作動中の文書$ %文書 を再読込みする ]よう要請されたときは、~UAは:

【† ~browserの “再読込み~button” 等を指すと思われるが,~DOM内の要素も含まれる? 】

  • %B を %文書 と同じ資源へ`~navigate$して,`閲覧文脈$の`現在の~entry$に対し`~entry更新-$を遂行するべきである。 この~naviは、`再読込みにより誘発され$たものとされる。
  • 非冪等~method(例: ~HTTP `POST^meth )の事例では、~UAは先ず,利用者にその演算を確認してもらうよう~promptするべきである — さもなければ~transaction(例:購入や~database改変)が繰返され得るので。
  • [ 再読込み時に~cacheを明示的に上書きする ]ことを,利用者に許容してよい。
  • [ %文書 の`再読込み上書き~flag$ ~EQ ~ON ]の場合、この段落に述べた~naviに代わって,`上書きされた再読込み$を遂行してよい(`~source閲覧文脈$として %B を与える下で)。
◎ When a user requests that the active document of a browsing context be reloaded through a user interface element, the user agent should navigate the browsing context to the same resource as that Document, to perform an entry update of the browsing context's current entry. This is a reload-triggered navigation. In the case of non-idempotent methods (e.g. HTTP POST), the user agent should prompt the user to confirm the operation first, since otherwise transactions (e.g. purchases or database modifications) could be repeated. User agents may allow the user to explicitly override any caches when reloading. If browsing context's active document's reload override flag is set, then the user agent may instead perform an overridden reload rather than the navigation described in this paragraph (with the browsing context being reloaded as the source browsing context).
`ancestorOrigins@m

取得子は、次の手続きを走らせ~MUST: ◎ The ancestorOrigins attribute's getter must run these steps:

  1. 此れの`生成元~domainを検査する$ ◎ If this Location object's relevant Document's origin is not same origin-domain with the entry settings object's origin, then throw a "SecurityError" DOMException.
  2. ~RET 此れの`先祖~生成元~list$ ◎ Otherwise, return this Location object's ancestor origins list.
`ancestorOrigins$m 属性がどう働くかの詳細は、まだ異論があり,変更され得る。 更なる情報は issue #1918 を見よ。 ◎ The details of how the ancestorOrigins attribute works are still controversial and might change. See issue #1918 for more information.

【 以下,この節, およびその各 下位節の内容は、 別ページ にて。 】

7.8. ~webの閲覧

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

7.9. ~offline~web~app

【 この節の内容は未訳。 】