セッション履歴とナビ


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

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

7.9. ~session履歴と~navi

7.9.1 閲覧~session

`閲覧~session@ は… `閲覧~session$の定義-法は、 課題 #4782, 課題 #5350 を見よ。 それは、概ね`~top-level閲覧文脈$に相似的である — [ `Cross-Origin-Opener-Policy$h ~header/~navi ]に因り置換され得ないことを除いて。 ◎ A browsing session is …. See whatwg/html issue #4782 and whatwg/html issue #5350 for defining browsing session. It is roughly analogous to a top-level browsing context except that it cannot be replaced due to a `Cross-Origin-Opener-Policy` header or navigation.

各`~top-level閲覧文脈$には、ある`閲覧~session$を与える `閲覧~session@tlbc が結付けられる。 ◎ A top-level browsing context has an associated browsing session which is a browsing session.

`環境~設定群~obj$ %環境 の `閲覧~session@enV は、次の手続きを走らせた結果になる: ◎ The browsing session of an environment settings object environment is the result of running these steps:

  1. ~Assert: %環境 には`担当の文書$enVがある。 ◎ Assert: environment has a responsible document.
  2. ~RET %環境 の`担当の文書$enVが`属する閲覧文脈$の`~top-level閲覧文脈$の`閲覧~session$tlbc ◎ Return environment's responsible document's browsing context's top-level browsing context's browsing session.

7.9.2. 閲覧文脈の~session履歴

各 `閲覧文脈$は、`子~閲覧文脈$を含め,互いに別個の `~session履歴@ を有する。 それは,何個かの`~session履歴~entry$からなる平坦な~listであり、それまでに`閲覧文脈$に呈示された一連の`文書$を表現する。 ◎ The sequence of Documents in a browsing context is its session history. Each browsing context, including child browsing contexts, has a distinct session history. A browsing context's session history consists of a flat list of session history entries.

`閲覧文脈$の`~session履歴$内の各`文書$shE【!`文書$】には、一意な `History$I ~objが結付けられる — そのいずれも、同じ下層の`~session履歴$を~model化するモノトスル。 ◎ 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 取得子~手続きは ⇒ ~RET コレに`結付けられている文書$の `History$I ~obj ◎ The history getter steps are to return this's associated Document's History instance.

`~session履歴~entry@ は、次に挙げる`~item$sctを伴う`構造体$である: ◎ A session history entry is a struct with the following items:

`~URL@shE ◎ URL,\
`~URL$ ◎ a URL
`文書@shE ◎ document,\
`文書$または ~NULL ◎ a Document or null
注記: 各`~session履歴~entry$ %~entry には,最初に作成されたとき,その`文書$shE用に`文書$があてがわれるが、それは,`作動中$でないときに資源を解放するため`破棄-$docされ得る。 %~entry の`~URL$shEと他の~dataは、~UAが %~entry へ~navigateする必要があると見出した所で,破棄されたそれに代わる新たな`文書$を得るために利用される。 ◎ Each entry, when first created, has a Document for its 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 the session history entry is then used to bring a new Document into being to take the place of the original, in the case where the user agent finds itself having to navigate to the entry.
`直列形の状態@shE ◎ serialized state,\
`直列形の状態$または ~NULL — 初期~時には~NULL とする。 ◎ which is serialized state or null, initially null
`~title@shE ◎ title,\
`文字列$または ~NULL ◎ a string or null
注記: これは、`文書$shEの現在の `title$e に関係する必要はない。 この`~title$shEには、利用者が文書の履歴を~navigateできるよう,その時点での文書の状態を説明することが意図されている。 ◎ This need not have any relation with the current title of the document. The session history entry title is intended to explain the state of the document at that point, so that the user can navigate the document's history.
`~scroll復旧~mode@shE ◎ scroll restoration mode,\
`~scroll復旧~mode$ — 初期~時には `auto$l とする。 ◎ a scroll restoration mode, initially "auto".
`~scroll位置~data@shE ◎ scroll position data,\
`文書$shEの`復旧-可能な~scroll可能な領域$用の~scroll位置~data。 ◎ which is scroll position data for the document's restorable scrollable regions.
`閲覧文脈~名@shE ◎ browsing context name,\
`閲覧文脈~名$ ◎ a browsing context name
`持続される利用者~状態@shE ◎ persisted user state,\
`実装定義$な何か — 初期~時には ~NULL とする。 ◎ which is implementation-defined, initially null
例えば,一部の~UAは、~form~controlの値を持続したいと求めるかもしれない。 ◎ For example, some user agents might want to persist 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.

`直列形の状態@ は、~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.

~pageは、~session履歴に`直列形の状態$を追加できる。 これは、利用者(または~script)が履歴~内を後戻したときに,`逆直列化-$された上で ~scriptに返される。 したがって、 1 ~pageだけの~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.

注記: `直列形の状態$には、主に二つの用途が意図されている: ◎ Serialized state is intended to be used for two main purposes:\

  • 一つは、予め構文解析した状態の記述を`~URL$と一緒に格納して,単純な事例では 作者が構文解析せずに済むようにすること(元々利用者から渡された`~URL$を取扱うときは,依然として それを構文解析する必要があるので、これは小さな最適化に過ぎない)。 ◎ 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).\
  • もう一つは、他からは格納されない状態 — 現在の`文書$~instanceにのみ適用され,同じ~URLの`文書$が新たに開かれるときには再構築される必要があるような、状態 — を,作者が ~URLと一緒に格納できるようにすること。 ◎ 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.

後者の用例には、次が挙げられる: ◎ An example of the latter would be\

  • 利用者が後戻するときに、以前に~animateさせていた~popup `div$e を,同じ所在から~animateし続けれるよう,精確に協調するように追跡する。 ◎ something like keeping track of the precise coordinate from which a popup div was made to animate, so that if the user goes back, it can be made to animate to the same location.\
  • [[ `~URL$ 内の情報に基づいて~serverから~fetchされるような~data ]の~cache ]の中への~pointerを保っておいて、後戻する/先進するときに,その情報を再度~fetchせずに済むようにする。 ◎ 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.

`~scroll復旧~mode@ は、~UAが ある`~session履歴~entry$へ辿ったとき,持続される~scroll位置(もしあれば)を復旧するべきかどうかを指示する。 それは、次のいずれかをとり得る: ◎ A scroll restoration mode indicates whether the user agent should restore the persisted scroll position (if any) when traversing to an entry. A scroll restoration mode is one of the following:

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

~session履歴~内の[ 連続的な~entryたち ]は、同じ`文書$shEを共有し得る。 これは、通常の`~navi$を介して初期~entryに到達してから, `pushState()$m を介して それに後続する~entryが追加されたときに生じ得る。 あるいは、`素片へ~navigateする$ことを介しても生じ得る。 ◎ Several contiguous entries in a session history can share the same document. This can occur when the initial entry is reached via normal navigation, and the following entry is added via history.pushState(). Or it can occur via navigation to a fragment.

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

~UAは、所与の~entryたちに対し,その`文書$shEを — それが ~NULL でないならば — `破棄-$docしてもヨイ — ただし,次に該当するものは、`破棄-$docしないモノトスル ⇒# `現在の~entry$の`文書$shE/ ~scriptから参照されている`文書$ ◎ User agents may discard the documents of entries with non-null documents, as long as the following conditions are met: • They must not discard the document of the current entry. • They must not discard any Document objects which are referenced from script.

これらの制約は別として、この標準は,~UAが~entryの`文書$shEを[ いつまで~cacheに保つべきか, いつ破棄するべきか ]については指定しない。 ◎ Apart from these restrictions, this standard does not specify when user agents should discard an entry's document, versus keeping it cached.

注記: `文書$を`破棄-$docすると、それを共有している【!*】各`~session履歴~entry$の`文書$shEも ~NULL に設定されることになる。 そのような~entryへの後続の~naviは、新たな`文書$を作成して,それを~entryの`文書$shEに設定することになる。 ◎ Discarding a Document will set the corresponding document item of any session history entries to null. Subsequent navigations to those entries will result in the creation of a new Document object, and set the document item to it.


どの時点においても,`~session履歴$内のある 1 つの~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$は、通例的には,~naviの際に初期~時に作成される~entryになる。 しかしながら,上で述べたように、同じ`文書$shEを共有している連続的な~entryのうち いずれかにもなり得る。 ◎ The current entry is usually the initial entry created upon navigation. However, it can also be one of the contiguous entries that share the same document, as described above.

各`文書$ %文書 は、それが`属する閲覧文脈$ %B ~NEQ ~NULL ならば, `最近の~entry@ を有する — それは、`文書$の作成-時には ε (なし)とする。 これは、[ %B の`~session履歴$内の~entry ]のうち[ その`文書$shE ~EQ %文書 ]なるもののうち,最も近過去に辿られた~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.

7.9.3. `History^I ~interface

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

[Exposed=Window]
interface `History@I {
  readonly attribute unsigned long `length$m;
  attribute `ScrollRestoration$I `scrollRestoration$m;
  readonly attribute any `state$m;
  undefined `go$m(optional long %delta = 0);
  undefined `back$m();
  undefined `forward$m();
  undefined `pushState$m(any %data, DOMString %title, optional USVString? %url = null);
  undefined `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$shEを返す。 ◎ Returns the scroll restoration mode of the current entry in the session history.
設定して、`~session履歴$の`現在の~entry$の`~scroll復旧~mode$shEを変更できる。 ◎ Can be set, to change the scroll restoration mode of the current entry in the session history.
%window . `history$m . `state$m
`~session履歴$の現在の`直列形の状態$を逆直列化した結果の~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 に対する 0 は、現在の~pageを読込直すことになる。 ◎ 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.
前~pageがない場合は何もしない。 ◎ If there is no previous page, does nothing.
%window . `history$m . `forward$m()
`共同~session履歴$内で 1 段だけ先進する。 ◎ Goes forward one step in the joint session history.
次~pageがない場合は何もしない。 ◎ 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履歴$の実際の状態は,いくぶん漠然なものになり得る。 例えば、【! one unique origin】同じ生成元に属していた 2 個の同胞 `iframe$e 要素が,同時に別の生成元へ`履歴を辿る$こともあるので、それらの精確な順序は,きちんと定義されないかもしれない。 同様に,互いが他方を後と見出すこともあるため、それぞれにとっての`共同~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.

各 `History$I ~objは `状態@hsT を有する — 初期~時には ~NULL とする。 ◎ Each History object has state, initially null.

`length@m 取得子~手続きは: ◎ The length getter steps are:

  1. ~IF[ コレを結付けている`文書$は`全部的に作動中$でない ] ⇒ ~THROW `SecurityError$E ◎ If this's associated Document is not fully active, then throw a "SecurityError" DOMException.
  2. ~RET `~top-level閲覧文脈$の`共同~session履歴$内の~entryの個数 ◎ Return the number of entries in the top-level browsing context's joint session history.

~scriptからは、実際の各~entryには~access可能でない。 ◎ The actual entries are not accessible from script.

`scrollRestoration@m 取得子~手続きは: ◎ The scrollRestoration getter steps are:

  1. ~IF[ コレを結付けている`文書$は`全部的に作動中$でない ] ⇒ ~THROW `SecurityError$E ◎ If this's associated Document is not fully active, then throw a "SecurityError" DOMException.
  2. ~RET コレの`~session履歴$の`現在の~entry$の`~scroll復旧~mode$shE ◎ Return this's session history's current entry's scroll restoration mode.

`scrollRestoration$m 設定子~手続きは: ◎ The scrollRestoration setter steps are:

  1. ~IF[ コレを結付けている`文書$は`全部的に作動中$でない ] ⇒ ~THROW `SecurityError$E ◎ If this's associated Document is not fully active, then throw a "SecurityError" DOMException.
  2. コレの`~session履歴$の`現在の~entry$の`~scroll復旧~mode$shE ~SET 所与の値 ◎ Set this's session history's current entry's scroll restoration mode to the given value.

`state@m 取得子~手続きは: ◎ The state getter steps are:

  1. ~IF[ コレを結付けている`文書$は`全部的に作動中$でない ] ⇒ ~THROW `SecurityError$E ◎ If this's associated Document is not fully active, then throw a "SecurityError" DOMException.
  2. ~RET コレの`状態$hsT ◎ Return this's state.

`go(delta)@m ~method~手続きは: ◎ The go(delta) method steps are:

  1. %文書 ~LET コレを結付けている`文書$ ◎ Let document be this's associated Document.
  2. ~IF[ %文書 は`全部的に作動中$でない ] ⇒ ~THROW `SecurityError$E ◎ If document is not fully active, then throw a "SecurityError" DOMException.
  3. ~IF[ %delta ~EQ 0 ] ⇒ `location.reload()$m ~methodが~callされたかのように動作する ◎ If delta is 0, then act as if the location.reload() method was called, and return.
  4. ~ELSE ⇒ `履歴を前/後に辿る$( %delta, %文書 が`属する閲覧文脈$ ) ◎ Traverse the history by a delta with delta and document's browsing context.

`back()@m ~method~手続きは: ◎ The back() method steps are:

  1. %文書 ~LET コレを結付けている`文書$ ◎ Let document be this's associated Document.
  2. ~IF[ %文書 は`全部的に作動中$でない ] ⇒ ~THROW `SecurityError$E ◎ If document is not fully active, then throw a "SecurityError" DOMException.
  3. `履歴を前/後に辿る$( −1, %文書 が`属する閲覧文脈$ ) ◎ Traverse the history by a delta with −1 and document's browsing context.

`forward()@m ~method~手続きは: ◎ The forward() method steps are:

  1. %文書 ~LET コレを結付けている`文書$ ◎ Let document be this's associated Document.
  2. ~IF[ %文書 は`全部的に作動中$でない ] ⇒ ~THROW `SecurityError$E ◎ If document is not fully active, then throw a "SecurityError" DOMException.
  3. `履歴を前/後に辿る$( 1, %文書 が`属する閲覧文脈$ ) ◎ Traverse the history by a delta with +1 and document's browsing context.

各`~top-level閲覧文脈$は、 `~session履歴~辿り~queue@ を有する — それは、初期~時には空であり,いくつかの`~task$が追加され得る。 ◎ Each top-level browsing context has a session history traversal queue, initially empty, to which tasks can be added.

各`~top-level閲覧文脈$ %B の作成-時には、その時点から`並列的$に,次の~algoを走らすモノトスル — この~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. %~queue ~LET %B の`~session履歴~辿り~queue$ ◎ ↓
  2. ~WHILE 無条件

    1. %~queue が空でなくなるまで待機する ◎ Wait until this top-level browsing context's session history traversal queue is not empty.
    2. %~queue から最初の`~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$は、互いに異なるかもしれないので(これは、利用者が `example.com^c から `shop.example^c へ~navigateするときに起こり得る)、さもなければ,遷移は それらの~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 navigates from example.com to shop.example), transitions would otherwise have to involve cross-event-loop synchronization.


`履歴を前/後に辿る@ ときは、所与の ( 整数 %delta, `閲覧文脈$ %~source閲覧文脈 ) に対し, %~source閲覧文脈 の【! this 】`~top-level閲覧文脈$の`~session履歴~辿り~queue$に,次を走らす`~task$を付加するモノトスル: ◎ To traverse the history by a delta given delta and browsing context source browsing context, 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 ~NIN { 0 〜 ( %履歴 内の~entry数 ~MINUS 1 ) } ] ⇒ ~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 return.
  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 が属する`~session履歴$を有する`閲覧文脈$ ◎ Let specified browsing context be the browsing context of the specified entry.
  6. ~IF[ %~source閲覧文脈 は, %B を`~navigateすることは許容されて$いない ] ⇒ ~RET ◎ If source browsing context is not allowed to navigate specified browsing context, then return.
  7. ~IF[ %B にて`作動中の文書$において、現在,`文書を~unloadする$~algoは走っている ] ⇒ ~RET ◎ If the specified browsing context's active document's unload a document algorithm is currently running, return.
  8. 次を遂行する`大域~taskを~queueする$( `履歴~辿り~task源$, %B にて`作動中の~window$ ): ◎ Queue a global task on the history traversal task source given specified browsing context's active window to perform the following steps:

    1. ~IF[ %B を~navigateしようとする進行中の試みがあるが、 %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 return.
      2. `文書を~unloadする$( %文書 ) ◎ Unload the active document of the specified browsing context.
    4. %~entry へ`履歴を辿る$ — 次を与える下で ⇒ `明示的な履歴~navi$V ~SET ~T ◎ Traverse the history of the specified browsing context to the specified entry with explicitHistoryNavigation set to true.

~UAは,利用者が(例えば~browserの戻る/進む~buttonを利用して)`閲覧文脈$を通して~navigateするときは、次を走らすモノトスル ⇒ `履歴を前/後に辿る$( 利用者が指定した動作に等価な %delta, 利用者が操作oしている`閲覧文脈$ ) ◎ 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 with a delta equivalent to the action specified by the user and the browsing context being operated on.

`~URLと履歴を更新する@ 手続きは、所与の ⇒# `文書$ %文書, `~URL$ %新~URL, `直列形の状態$または ~NULL %直列形の~data (省略時は ~NULL ), 文字列または ~NULL %~title (省略時は ~NULL ), %~pushする? ~IN { `~pushする^i, ε } (省略時は ε ) ◎終 に対し,次を走らす: ◎ The URL and history update steps, given a Document document, a URL newURL, an optional serialized state-or-null serializedData (default null), an optional string-or-null title (default null), and an optional boolean isPush (default false), are:

  1. %履歴 ~LET %文書 が`属する閲覧文脈$の`~session履歴$ ◎ Let browsingContext be document's browsing context.
  2. ~IF[ %~pushする? ~EQ `~pushする^i ]: ◎ If isPush is true, then:

    1. %履歴 から[ その`現在の~entry$より後にある~entry ]をすべて除去する ◎ Remove all the entries in browsingContext'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. `履歴~辿り~task源$から~queueされた`~task$のうち,次を満たすものすべてを除去する ⇒ `~task$の`文書$tK ~IN 【%文書 が`属する閲覧文脈$の】`~top-level閲覧文脈$の`文書~族$ ◎ 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. %履歴 の`現在の~entry$に`持続される状態を保存する$ ◎ Save persisted state to the current entry.
    4. %新たな~entry ~LET 次を伴う新たな`~session履歴~entry$ ⇒# `~URL$shE ~SET %新~URL `文書$shE ~SET %文書 `直列形の状態$shE ~SET %直列形の~data `~title$shE ~SET %~title `~scroll復旧~mode$shE ~SET %履歴 の`現在の~entry$の`~scroll復旧~mode$shE ◎ Add a session history entry entry to browsingContext's session history, after the current entry, with • newURL as the URL; • document as the document; • serializedData as the serialized state; • title as the title; • the scroll restoration mode of the current entry in the session history as the scroll restoration mode.
    5. %履歴 に — その`現在の~entry$の後に — %新たな~entry を追加する ◎ ↑
    6. %履歴 の`現在の~entry$ ~SET %新たな~entry ◎ Update the current entry to be this newly added entry.
  3. ~ELSE: ◎ Otherwise:

    1. %~entry ~LET %履歴 の`現在の~entry$ ◎ Let entry be browsingContext's session history's current entry.
    2. %~entry の`~URL$shE ~SET %新~URL ◎ Set entry's URL to newURL.
    3. ~IF[ %直列形の~data ~NEQ ~NULL ] ⇒ %~entry の`直列形の状態$shE ~SET %直列形の~data ◎ If serializedData is not null, then set entry's serialized state to serializedData.
    4. %~entry の`~title$shE ~SET %~title ◎ Set entry's title to title.
    5. ~IF[ %~entry は非 `GET^h 要請を表現する(例: それは `POST^h 提出の結果であった) ] ⇒ %~entry を `GET^h 要請を表現するものに更新する ◎ Update entry so that it represents a GET request, if it currently represents a non-GET request (e.g. it was the result of a POST submission).

      これは何を意味する? これは`~session履歴~entry$の定義の一部を成していない。 ◎ What does this mean? This is not a part of the definition of session history entry.

  4. %文書 の`~URL$doc ~SET %新~URL ◎ Set document's URL to newURL.

    注記: これは,[ `閲覧文脈$の`~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.

`pushState(data, title, url)@m ~method手続きは ⇒ `共有される履歴の状態を~pushするか置換する手続き$( コレ, %data, %title, %url, `~pushする^i ) ◎ The pushState(data, title, url) method steps are to run the shared history push/replace state steps given this, data, title, url, and true.
`replaceState(data, title, url)@m ~method手続きは ⇒ `共有される履歴の状態を~pushするか置換する手続き$( コレ, %data, %title, %url ) ◎ The replaceState(data, title, url) method steps are to run the shared history push/replace state steps given this, data, title, url, and false.

`共有される履歴の状態を~pushするか置換する手続き@ は、所与の ( `History$I %履歴, 値 %~data, 文字列 %~title, `~scalar値~文字列$または ~NULL %~url, %~pushする? ~IN { `~pushする^i, ε } (省略時は ε ) ) に対し: ◎ The shared history push/replace state steps, given a History history, a value data, a string title, a scalar value string-or-null url, and a boolean isPush, are:

  1. %文書 ~LET %履歴 を結付けている`文書$ 【以下における %履歴 は、それが表現している`~session履歴$も兼ねる。】 ◎ Let document be history's associated Document.
  2. ~IF[ %文書 は`全部的に作動中$でない ] ⇒ ~THROW `SecurityError$E ◎ If document is not fully active, then throw a "SecurityError" DOMException.
  3. 任意選択で ⇒ ~RET ◎ Optionally, return.\

    (例えば~UAは、この手続きを呼出す~methodが[ ~timer / 利用者による明瞭な動作に呼応して誘発されたものではない~event~listener ]から~callされた場合, あるいは立て続けに呼出された場合には,許容しないかもしれない。) ◎ (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 history's relevant Realm.
  5. %直列形の~data ~LET `StructuredSerializeForStorage$jA( %~data ) (例外投出あり) ◎ Let serializedData be StructuredSerializeForStorage(data). Rethrow any exceptions.
  6. %新~URL ~LET %履歴【!the session history】 の`現在の~entry$の`~URL$shE ◎ Let newURL be the session history's current entry's URL.
  7. ~IF[ %~url ~NEQ ~NULL ]: ◎ If url is not null, then:

    1. %新~URL ~SET %~url を %履歴 に`関連な設定群~obj$に`相対的に構文解析-$した結果 ◎ Parse url, relative to the relevant settings object of history.
    2. ~IF[ %新~URL ~EQ `失敗^i ] ⇒ ~THROW `SecurityError$E ◎ If that fails, then throw a "SecurityError" DOMException. ◎ Set newURL to the resulting URL record.
    3. %文書~URL ~LET %文書 の`~URL$doc ◎ ↓
    4. ~IF[[ %新~URL, %文書~URL ]の[ `~path$url, `~query$url, `素片$url ]以外のある成分が相違する ] ⇒ ~THROW `SecurityError$E ◎ Compare newURL 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.
    5. ~IF[ ( %新~URL の`生成元$url, %文書 の`生成元$ ) は`同一-生成元$でない ]~AND[[ %新~URL, %文書~URL ]の[ `~path$url, `~query$url ]いずれかの成分は相違する ] ⇒ ~THROW `SecurityError$E

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

      ◎ If the origin of newURL 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. (This prevents sandboxed content from spoofing other pages on the same origin.)
  8. `~URLと履歴を更新する$( %文書, %新~URL, %直列形の~data, %~title, %~pushする? ) ◎ Run the URL and history update steps given document and newURL, with serializedData set to serializedData, title set to title, and isPush set to isPush.
  9. %状態 ~LET `StructuredDeserialize$jA( %直列形の~data, %宛先~realm ) ⇒ 例外が投出されたときは、~catchして ⇒ %状態 ~SET ~NULL (例外は無視する) ◎ Let state be StructuredDeserialize(serializedData, targetRealm). If this throws an exception, catch it, ignore the exception, and set state to null.
  10. %履歴 の`状態$hsT ~SET %状態 ◎ Set history's state to state.
  11. %履歴 の`現在の~entry$の`文書$shEの`最近の~entry$ ~SET `現在の~entry$ ◎ Set the current entry's document'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は、~pageごとに,その~session履歴に追加される状態~obj【`直列形の状態$として与えられる~obj】の個数を制限してもヨイ。 ~pageが この`実装定義$な上限に抵触した場合、~UAは,新たな~entryが追加された後に,[ 当の`文書$用の`~session履歴$を成す最初の~entry ]の直後の~entryを除去するモノトスル(したがって,状態~履歴は、先に入れたものから抹消されるように動作する( FIFO )一方で、~naviに対しては,先に入れたものが最後に残るように動作する( LIFO ))。 ◎ User agents may limit the number of state objects added to the session history per page. If a page hits the implementation-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の座標に対応する~pageを~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 を実装している静的な~pageとして、次の様なものがあるとする: ◎ 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するたびに,~page全体を読込直す必要が生じることである。 次に、~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を示す単純な~pageがあるとする。 ~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.9.4. ~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履歴を[ 各~pageが,複数の “~~前方へ~~枝分かれする” ~pageを持つ ]様な方式で実装することもできる。 この仕様は、[ `history$m ~obj内の各~pageからなる一本道の~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.

同様に,ある~pageが 2 個の `iframe$e を包含しているとき,~pageは各 `iframe$e の `history$m ~objとは別個の `history$m ~objを持つ — [ 2 個の内縁~frameと外縁~pageの~navi ]を互いに差挟むような~session履歴を伴うような。 代表的な~web~browserは、利用者に “戻る” ~buttonを 1 個しか呈示しない事実があるにもかかわらず。 ◎ 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.

~security: ある~pageが `pushState()$m を濫用して,~UAの履歴~navi便宜性を “乗取る” のを避けるため、~UAには,以前の~pageへ一足飛びに戻る仕方を利用者に供することが示唆される(単に 1 つ前の状態へ後戻するのでなく)。 例えば、戻る~buttonは,~session履歴~内の~pageたちだけを示し,他のどの状態も示さないような ~drop-downを持たせることもできる。 同様に,聴覚~browserは、 2 個の前へ “戻る” ~command — 1 つ前の状態へ後戻するもの, 以前の~pageへ一足飛びに戻るもの — を持たせることもできる。 ◎ 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.9.5. `Location^I ~interface

各 `~window$には、その作成-時に,新たな `Location$I ~objが結付けられる。 【!* unique instance of 〜 allocated】

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

%document . `~location0$m [ = %value ]
%window . `location$m [ = %value ]
現在の~pageの所在を伴う `Location$I ~objを返す。 ◎ Returns a Location object with the current page's location.
設定して,別の~pageへ~navigateできる。 ◎ Can be set, to navigate to another page.

`Document$I の `~location0@m 取得子~手続きは ◎ The Document object's location attribute's getter must\

  1. ~IF[ コレは`全部的に作動中$である ] ⇒ ~RET コレに`関連な大域~obj$の `Location$I ~obj ◎ return this Document object's relevant global object's Location object, if this Document object is fully active,\
  2. ~RET ~NULL ◎ and null otherwise.
`Window$I の `location@m 取得子~手続きは ⇒ ~RET コレの `Location$I ~obj ◎ 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.

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

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

  [`LegacyUnforgeable$] undefined `assign$m(USVString %url);
  [`LegacyUnforgeable$] undefined `replace$m(USVString %url);
  [`LegacyUnforgeable$] undefined `reload$m();

  [`LegacyUnforgeable$, 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履歴から現在の~pageを除去した上で,所与の %url へ~navigateする。 ◎ Removes the current page from the session history and navigates to the given URL.
%location . `reload$m()
現在の~pageを読込直す。 ◎ 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.

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

`関連な文書@Loc
%L に`関連な大域~obj$に`対応する閲覧文脈$ %B に応じて ⇒# ~NULL ならば ~NULL / ~ELSE_ %B にて`作動中の文書$ ◎ A Location object has an associated relevant Document, which is this Location object's relevant global object's browsing context's active document, if this Location object's relevant global object's browsing context is non-null, and null otherwise.
`~url@Loc
%L に`関連な文書$Loc %文書 に応じて ⇒# ~NULL ならば `about_blank$sc / ~ELSE_ %文書 の`~URL$doc ◎ A Location object has an associated url, which is this Location object's relevant Document's URL, if this Location object's relevant Document is non-null, and about:blank otherwise.
`先祖~生成元~list@

%L の作成-時に、ある `DOMStringList$I ~objに設定するモノトスル — 次の手続きの結果で与えられる文字列の~listを結付けた上で: ◎ 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. %B ~LET %L を結付けている`文書$【 %L に`関連な文書$Loc?】が`属する閲覧文脈$ 【~Assert: %B ~NEQ ~NULL】 ◎ Let current be the browsing context of the Document with which this Location object is associated.
  3. %B の ~EACH( `先祖~閲覧文脈$ %先祖 ) に対し, %B に近い先祖から順に ⇒ %~list に次の結果を`付加する$ ⇒ `生成元を直列化する$( %先祖 にて`作動中の文書$の`生成元$ ) ◎ 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.
  4. ~RET %~list ◎ End: Return output.
【 この仕様の中では、 `ancestorOrigins$m のみから利用される。 service worker からも利用されている。 】

`~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. %履歴~取扱い ~LET [ 次のいずれかが満たされるならば `既定$i / ~ELSE_ `置換-$i ]: ◎ Let historyHandling be "replace". ◎ If any of the following conditions are met, then set historyHandling to "default":

    • %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する$( %url, %履歴~取扱い ) ◎ Location-object navigate, given url and historyHandling.

`~Location~objにより~navigateする@ ときは、所与の ( %url, %履歴~取扱い) に対し,次を走らす: ◎ To Location-object navigate, given a url and historyHandling:

  1. %B ~LET `現在の大域~obj$に`対応する閲覧文脈$ 【~Assert: %B ~NEQ ~NULL】 ◎ Let browsingContext be the current global object's browsing context.
  2. %~source閲覧文脈 ~LET `現任の大域~obj$に`対応する閲覧文脈$ ◎ Let sourceBrowsingContext be the incumbent global object's browsing context.
  3. ~IF[ %B の`~session履歴$は、 %B の作成-時に作成された `about_blank$sc `文書$のみからなる ] ⇒ %履歴~取扱い ~SET `置換-$i ◎ If browsingContext's session history contains only one Document, and that was the about:blank Document created when the browsing context was created, then set historyHandling to "replace".
  4. 次を与える下で, %B を %url へ`~navigate$する(例外投出あり) ⇒# `例外を可能化する$V ~SET ~T, `履歴~取扱い$V ~SET %履歴~取扱い, `~source閲覧文脈$ ~SET %~source閲覧文脈, ◎ Navigate browsingContext to url, with exceptionsEnabled set to true, historyHandling set to historyHandling, and the source browsing context set to sourceBrowsingContext.

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

  1. %文書 ~LET %L に`関連な文書$Loc
  2. ~IF[ %文書 ~NEQ ~NULL ]~AND[ ( %文書 の`生成元$, `入口~設定群~obj$の`生成元$enV ) は`同じ生成元~domain$でない ] ⇒ ~THROW `SecurityError$E

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

`href@m 取得子~手続きは: ◎ The href attribute's getter must run these steps:

  1. コレの`生成元~domainを検査する$ ◎ If this Location object's relevant Document is non-null and its origin is not same origin-domain with the entry settings object's origin, then throw a "SecurityError" DOMException.
  2. ~RET `~URLを直列化する$( コレが指す`~url$Loc ) ◎ Return this Location object's url, serialized.

`href$m 設定子~手続きは: ◎ The href attribute's setter must run these steps:

  1. ~IF[ コレに`関連な文書$Loc ~EQ ~NULL ] ⇒ ~RET ◎ If this Location object's relevant Document is null, then return.
  2. %~URL~record ~LET 所与の値を`入口~設定群~obj$に`相対的に構文解析-$した`結果の~URL~record$ ◎ Parse the given value relative to the entry settings object.\
  3. ~IF[ %~URL~record ~EQ `失敗^i ] ⇒ ~THROW `TypeError$E ◎ If that failed, throw a TypeError exception.
  4. `~Location~obj設定子により~navigateする$( コレ, %~URL~record ) ◎ Location-object-setter navigate given the resulting URL record.

注記: `href$m 属性~設定子に対しては、意図的に~security検査は行われない。 ◎ The href attribute setter intentionally has no security check.

`origin@m 取得子~手続きは: ◎ The origin attribute's getter must run these steps:

  1. コレの`生成元~domainを検査する$ ◎ If this Location object's relevant Document is non-null and its origin is not same origin-domain with the entry settings object's origin, then throw a "SecurityError" DOMException.
  2. ~RET `生成元を直列化する$( コレが指す`~url$Locの`生成元$url ) ◎ Return the serialization of this Location object's url's origin.

`protocol@m 取得子~手続きは: ◎ The protocol attribute's getter must run these steps:

  1. コレの`生成元~domainを検査する$ ◎ If this Location object's relevant Document is non-null and its 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 ":".

`protocol$m 設定子~手続きは: ◎ The protocol attribute's setter must run these steps:

  1. ~IF[ コレに`関連な文書$Loc ~EQ ~NULL ] ⇒ ~RET ◎ If this Location object's relevant Document is null, then return.
  2. コレの`生成元~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.
  3. %複製~URL ~LET コレが指す`~url$Locの複製 ◎ Let copyURL be a copy of this Location object's url.
  4. %~protocol文字列 ~LET 次を順に連結した結果 ⇒# 所与の値, `:^l ◎ ↓
  5. %失敗かも ~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".

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

`host@m 取得子~手続きは: ◎ The host attribute's getter must run these steps:

  1. コレの`生成元~domainを検査する$ ◎ If this Location object's relevant Document is non-null and its 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 `~hostを直列化する$( %url の`~host$url ) ◎ ↓
  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 ) ◎ Return url's host, serialized, followed by ":" and url's port, serialized.

`host$m 設定子~手続きは: ◎ The host attribute's setter must run these steps:

  1. ~IF[ コレに`関連な文書$Loc ~EQ ~NULL ] ⇒ ~RET ◎ If this Location object's relevant Document is null, then return.
  2. コレの`生成元~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.
  3. %複製~URL ~LET コレが指す`~url$Locの複製 ◎ Let copyURL be a copy of this Location object's url.
  4. ~IF[ %複製~URL の`基底~URL不可用~flag$ ~EQ ~T ] ⇒ ~RET ◎ If copyURL's cannot-be-a-base-URL flag is set, terminate these steps.
  5. 次を与える下で,所与の値を`基本~URL構文解析器$にかける ⇒ ~URLと上書stateの組: ( %複製~URL, `~host~state$url ) ◎ Basic URL parse the given value, with copyURL as url and host state as state override.
  6. `~Location~obj設定子により~navigateする$( コレ, %複製~URL ) ◎ Location-object-setter navigate to copyURL.

`hostname@m 取得子~手続きは: ◎ The hostname attribute's getter must run these steps:

  1. コレの`生成元~domainを検査する$ ◎ If this Location object's relevant Document is non-null and its 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 `~hostを直列化する$( コレが指す`~url$Locの`~host$url ) ◎ Return this Location object's url's host, serialized.

`hostname$m 設定子~手続きは: ◎ The hostname attribute's setter must run these steps:

  1. ~IF[ コレに`関連な文書$Loc ~EQ ~NULL ] ⇒ ~RET ◎ If this Location object's relevant Document is null, then return.
  2. コレの`生成元~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.
  3. %複製~URL ~LET コレが指す`~url$Locの複製 ◎ Let copyURL be a copy of this Location object's url.
  4. ~IF[ %複製~URL の`基底~URL不可用~flag$ ~EQ ~T ] ⇒ ~RET ◎ If copyURL's cannot-be-a-base-URL flag is set, terminate these steps.
  5. 次を与える下で,所与の値を`基本~URL構文解析器$にかける ⇒ ~URLと上書stateの組: ( %複製~URL, `~hostname~state$url ) ◎ Basic URL parse the given value, with copyURL as url and hostname state as state override.
  6. `~Location~obj設定子により~navigateする$( コレ, %複製~URL ) ◎ Location-object-setter navigate to copyURL.

`port@m 取得子~手続きは: ◎ The port attribute's getter must run these steps:

  1. コレの`生成元~domainを検査する$ ◎ If this Location object's relevant Document is non-null and its 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 ) ◎ Return this Location object's url's port, serialized.

`port$m 設定子~手続きは: ◎ The port attribute's setter must run these steps:

  1. ~IF[ コレに`関連な文書$Loc ~EQ ~NULL ] ⇒ ~RET ◎ If this Location object's relevant Document is null, then return.
  2. コレの`生成元~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.
  3. %複製~URL ~LET コレが指す`~url$Locの複製 ◎ Let copyURL be a copy of this Location object's url.
  4. ~IF[ %複製~URL は `~username/~password/~portを持てない$ ] ⇒ ~RET ◎ If copyURL cannot have a username/password/port, then return.
  5. ~IF[ 所与の値 ~EQ 空~文字列 ] ⇒ %複製~URL の`~port$url ~SET ~NULL ◎ If the given value is the empty string, then set copyURL's port to null.
  6. ~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.
  7. `~Location~obj設定子により~navigateする$( コレ, %複製~URL ) ◎ Location-object-setter navigate to copyURL.

`pathname@m 取得子~手続きは: ◎ The pathname attribute's getter must run these steps:

  1. コレの`生成元~domainを検査する$ ◎ If this Location object's relevant Document is non-null and its 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 の`基底~URL不可用~flag$ ~EQ ~T ] ⇒ ~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 "/".

`pathname$m 設定子~手続きは: ◎ The pathname attribute's setter must run these steps:

  1. ~IF[ コレに`関連な文書$Loc ~EQ ~NULL ] ⇒ ~RET ◎ If this Location object's relevant Document is null, then return.
  2. コレの`生成元~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.
  3. %複製~URL ~LET コレが指す`~url$Locの複製 ◎ Let copyURL be a copy of this Location object's url.
  4. ~IF[ %複製~URL の`基底~URL不可用~flag$ ~EQ ~T ] ⇒ ~RET ◎ If copyURL's cannot-be-a-base-URL flag is set, terminate these steps.
  5. %複製~URL の`~path$url ~SET 空~list ◎ Set copyURL's path to the empty list.
  6. 次を与える下で,所与の値を`基本~URL構文解析器$にかける ⇒ ~URLと上書stateの組: ( %複製~URL, `~path開始-~state$url ) ◎ Basic URL parse the given value, with copyURL as url and path start state as state override.
  7. `~Location~obj設定子により~navigateする$( コレ, %複製~URL ) ◎ Location-object-setter navigate to copyURL.

`search@m 取得子~手続きは: ◎ The search attribute's getter must run these steps:

  1. コレの`生成元~domainを検査する$ ◎ If this Location object's relevant Document is non-null and its 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.

`search$m 設定子~手続きは: ◎ The search attribute's setter must run these steps:

  1. ~IF[ コレに`関連な文書$Loc ~EQ ~NULL ] ⇒ ~RET ◎ If this Location object's relevant Document is null, then return.
  2. コレの`生成元~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.
  3. %複製~URL ~LET コレが指す`~url$Locの複製 ◎ Let copyURL be a copy of this Location object's url.
  4. ~IF[ 所与の値 ~EQ 空~文字列 ] ⇒ %複製~URL の`~query$url ~SET ~NULL ◎ If the given value is the empty string, set copyURL's query to null.
  5. ~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 ), %上書き符号化法: コレに`関連な文書$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.
  6. `~Location~obj設定子により~navigateする$( コレ, %複製~URL ) ◎ Location-object-setter navigate to copyURL.

`hash@m 取得子~手続きは: ◎ The hash attribute's getter must run these steps:

  1. コレの`生成元~domainを検査する$ ◎ If this Location object's relevant Document is non-null and its 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.

`hash$m 設定子~手続きは: ◎ The hash attribute's setter must run these steps:

  1. ~IF[ コレに`関連な文書$Loc ~EQ ~NULL ] ⇒ ~RET ◎ If this Location object's relevant Document is null, then return.
  2. コレの`生成元~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.
  3. %複製~URL ~LET コレが指す`~url$Locの複製 ◎ Let copyURL be a copy of this Location object's url.
  4. %入力 ~LET 所与の値 ◎ ↓
  5. ~IF[ %入力 の最初の文字 ~EQ `#^l ] ⇒ %入力 から最初の文字を除去する ◎ Let input be the given value with a single leading "#" removed, if any.
  6. %複製~URL の`素片$url ~SET 空~文字列 ◎ Set copyURL's fragment to the empty string.
  7. 次を与える下で, %入力 を`基本~URL構文解析器$にかける ⇒ ~URLと上書stateの組: ( %複製~URL, `素片~state$url ) ◎ Basic URL parse input, with copyURL as url and fragment state as state override.
  8. `~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 ~method~手続きは: ◎ When the assign(url) method is invoked, the user agent must run the following steps:

  1. ~IF[ コレに`関連な文書$Loc ~EQ ~NULL ] ⇒ ~RET ◎ If this Location object's relevant Document is null, then return.
  2. コレの`生成元~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.
  3. %~URL~record ~LET %url を,`入口~設定群~obj$に`相対的に構文解析-$した`結果の~URL~record$ ◎ Parse url relative to the entry settings object.\
  4. ~IF[ %~URL~record ~EQ `失敗^i ] ⇒ ~THROW `SyntaxError$E ◎ If that failed, throw a "SyntaxError" DOMException.
  5. `~Location~objにより~navigateする$( %~URL~record, `既定$i ) ◎ Location-object navigate given the resulting URL record and "default".

`replace(url)@m ~method~手続きは: ◎ When the replace(url) method is invoked, the user agent must run the following steps:

  1. ~IF[ コレに`関連な文書$Loc ~EQ ~NULL ] ⇒ ~RET ◎ If this Location object's relevant Document is null, then return.
  2. %~URL~record ~LET %url を,`入口~設定群~obj$に`相対的に構文解析-$した`結果の~URL~record$ ◎ Parse url relative to the entry settings object.\
  3. ~IF[ %~URL~record ~EQ `失敗^i ] ⇒ ~THROW `SyntaxError$E ◎ If that failed, throw a "SyntaxError" DOMException.
  4. `~Location~objにより~navigateする$( %~URL~record, `置換-$i ) ◎ Location-object navigate given the resulting URL record and "replace".

注記: `replace()$m ~methodに対しては、~security検査は意図的に行われない。 ◎ The replace() method intentionally has no security check.

`reload()@m ~method~手続きは: ◎ When the reload() method is invoked, the user agent must run the appropriate steps from the following list:

  1. ~IF[ コレに`関連な文書$Loc ~EQ ~NULL ] ⇒ ~RET ◎ If this Location object's relevant Document is null • Return.
  2. コレの`生成元~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.
  3. %B ~LET コレに`関連な大域~obj$に`対応する閲覧文脈$ ◎ ↓
  4. ~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 return.

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

  5. ~IF[ %B にて`作動中の文書$は`~iframe-srcdoc文書$である ] ⇒ `~iframeの属性を処理する$( %B の`容器$bc ) ◎ If the browsing context's active document is an iframe srcdoc document • Reprocess the iframe attributes of the browsing context's container.
  6. ~ELSE ⇒ %B をコレが指す`~url$Locへ`~navigate$する — 次を与える下で ⇒# `例外を可能化する$V ~SET ~T, `履歴~取扱い$V ~SET `再読込み$i, `~source閲覧文脈$ ~SET %B ◎ Otherwise • Navigate the browsing context to this Location object's relevant Document's URL, with exceptionsEnabled set to true, historyHandling set to "reload", and the source browsing context set to the browsing context being navigated.

利用者から ~UI要素†を通して[ `閲覧文脈$ %B にて`作動中の文書$ %文書 を読込直す ]よう要請されたときは、~UAは: ◎ When a user requests that the active document of a browsing context be reloaded through a user interface element,\

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

  • %B を %文書 と同じ資源へ`~navigate$するベキである — 次を与える下で ⇒# `履歴~取扱い$V ~SET `再読込み$i, ◎ the user agent should navigate the browsing context to the same resource as that Document, with historyHandling set to "reload".\
  • 非冪等~method(例: ~HTTP `POST^meth )の事例では、~UAは先ず,利用者にその演算を確認してもらうよう~promptするべきである — さもなければ、~transaction(例:購入や~database改変)が繰返され得るので。 ◎ 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.\
  • [ 読込直すとき、~cacheを明示的に上書きする ]ことを,利用者に許容してもヨイ。 ◎ User agents may allow the user to explicitly override any caches when reloading.

`ancestorOrigins@m 取得子~手続きは: ◎ The ancestorOrigins attribute's getter must run these steps:

  1. ~IF[ コレに`関連な文書$Loc ~EQ ~NULL ] ⇒ ~RET 空`~list$† ◎ If this Location object's relevant Document is null, then return an empty list.
  2. コレの`生成元~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.
  3. ~RET コレの`先祖~生成元~list$ ◎ Otherwise, return this Location object's ancestor origins list.

`ancestorOrigins$m 属性がどう働くかの詳細は、まだ異論があり,変更され得る。 更なる情報は、 課題 #1918 を見よ。 ◎ The details of how the ancestorOrigins attribute works are still controversial and might change. See issue #1918 for more information.

【† 常に同じ~objを返すはずなので( [SameObject] )、実際には,コレに`関連な大域~obj$に`対応する閲覧文脈$が破棄される時点で,`先祖~生成元~list$が空にされるのかもしれない。 】


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