【この訳に特有な表記規約】
◎表記記号7.2. ~naviと~session履歴に関係する~API
7.2.1 `Window^I, `WindowProxy^I, `Location^I ~obj用の~security基盤
【 この節を成す内容は、 `別~page@~HTMLWPROXY#cross-origin-objects$にて。 】
7.2.2. `Window^I ~obj
【 以下,この訳では、 `Window$I ~interfaceを実装する~objを単に ~window とも略記する。 この略記は、 この~pageに限らず,この仕様の他の~pageの和訳でも利用される — この節を指す~linkが付与された “`~window$” は、 `Window$I ~objを表すとする。 】
[Global=Window, Exposed=Window, `LegacyUnenumerableNamedProperties$] interface `Window@I : `EventTarget$I { /* 現在の閲覧~文脈 ◎ the current browsing context */ [`LegacyUnforgeable$] readonly attribute `WindowProxy$I `window$m; [Replaceable] readonly attribute `WindowProxy$I `self$m; [`LegacyUnforgeable$] readonly attribute `Document$I `document$m; attribute DOMString `name$m; [PutForwards=`href$m, `LegacyUnforgeable$] readonly attribute `Location$I `location$m; readonly attribute `History$I `history$m; readonly attribute `Navigation$I `navigation$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; undefined `close$m(); readonly attribute boolean `closed$m; undefined `stop$m(); undefined `focus$m(); undefined `blur$m(); /* 他の閲覧~文脈 ◎ other browsing contexts */ [Replaceable] readonly attribute `WindowProxy$I `frames$m; [Replaceable] readonly attribute unsigned long `length$m; [`LegacyUnforgeable$] 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 = "", optional DOMString %target = "_blank", optional [`LegacyNullToEmptyString$] DOMString %features = "" ); /* これは大域~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. */ `getter@#dom-window-nameditem$ `object$ (DOMString %name); /* ~UA ◎ the user agent */ readonly attribute `Navigator$I `navigator$m; [Replaceable] readonly attribute `Navigator$I `clientInformation$m; /* `navigator^m の旧来の別名 ◎ legacy alias of .navigator */ readonly attribute boolean `originAgentCluster$m; /* 利用者~向けの~prompt ◎ user prompts */ undefined `alert$m0(); undefined `alert$m(DOMString %message); boolean `confirm$m(optional DOMString %message = ""); DOMString? `prompt$m(optional DOMString %message = "", optional DOMString %default = ""); undefined `print$m(); undefined `postMessage$m(any %message, USVString %targetOrigin, optional sequence<`object$> %transfer = []); undefined `postMessage$m0(any %message, optional `WindowPostMessageOptions$I %options = {}); /* `廃用にされた~memberもある@~HTMLLS/obsolete.html#Window-partial$ */ }; `Window$I includes `GlobalEventHandlers$I; `Window$I includes `WindowEventHandlers$I; dictionary `WindowPostMessageOptions@I : `StructuredSerializeOptions$I { USVString `targetOrigin@m = "/"; };
- %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@#concept-document-window$が[ 在るならばそれ/ 無いならば ~NULL ]を返す。 ◎ Returns the Window associated with document, if there is one, or null otherwise.
各`~window$には、 それに `結付けられた文書@ と呼ばれる,ある`文書$が結付けられる。 それは,`~window$の作成-時に`初期~about_blank な文書$に設定され、 変化するのは,そこから`~navigate$する間に限られる。 ◎ The Window object 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$ %~window に `対応する閲覧~文脈@ とは、 %~window に`結付けられた文書$が`属する閲覧~文脈$を指す (これは、[ ~NULL /`閲覧~文脈$ ]になる)。 ◎ A Window's browsing context is its associated Document's browsing context. It is either null or a browsing context.
`~window$ %~window に `対応する~navigable@ は、 次を満たす`~navigable$は[ 在るならば それ/ 無いならば ~NULL ]とする ⇒ それにて`作動中な文書$nav ~EQ %~window に`結付けられた文書$ ◎ A Window's navigable is the navigable whose active document is the Window's associated Document's, or null if there is no such navigable.
【 該当するものは、 一つに限られることになる。 】
`document@m 取得子~手続きは ⇒ ~RET コレに`結付けられた文書$ ◎ The document getter steps are to return this's associated Document.
注記: `~window$に`結付けられた文書$が変化し得る事例は、 唯一,[ `~navi~algo$が,`閲覧~文脈$内に最初の~pageを読込むために`新たな文書を作成する@~HTMLlifecycle#initialise-the-document-object$とき ]に限られる。 その事例では、 `初期~about_blank な文書$【!~page】の`~window$が再利用され,新たな`文書$を取得する。 ◎ The Document object associated with a Window object can change in exactly one case: when the navigate algorithm creates a new Document object for the first page loaded in a browsing context. In that specific case, the Window object of the initial about:blank page is reused and gets a new Document object.
歴史的な理由から、 各`~window$は,次の特性を備える~propを持つモノトスル:
- writable, configurable, 非 enumerable
- 名前: `HTMLDocument@l
- 値: `Document$I interface object
7.2.2.1. ~windowを開く/閉じる~API
- %window = %window.`open([ url [, target [, features ] ] ])$m
- %url (省略時は "`~about_blank$sc" )を示す~windowを開いて、 それを返す。 ◎ Opens a window to show url (defaults to "about:blank"), and returns it.\
- %target (省略時は `_blank^l )は、 新たな~windowの名前を与える。 その名前の~windowがすでに存在する場合、 それが再利用される。 ◎ target (defaults to "_blank") gives the name of the new window. If a window already exists with that name, it is reused.\
-
%features 引数は、 `~commaで分離された~token集合$を包含し得る: ◎ The features argument can contain a set of comma-separated tokens:
- `noopener^l
- `noreferrer^l
- これらは順に,`~hyperlink$の~link型[ `noopener$v, `noreferrer$v ]と等価に挙動する。 ◎ These behave equivalently to the noopener and noreferrer link types on hyperlinks.
- `popup^l
- 新たな~window用には必要最小限な~web~browser~UIを供するよう, ~UAに奨励する。 (すべての `BarProp$I ~objの `visible$m 取得子にも影響iする。) ◎ Encourages user agents to provide a minimal web browser user interface for the new window. (Impacts the visible getter on all BarProp objects as well.)
-
globalThis.open("https://email.example/message/CAOOOkFcWW97r8yg=SsWg7GgCmp4suVX9o85y8BvNRqMjuc5PXg", undefined, "noopener,popup");
- %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
- 文書の読込nを取消す。 ◎ Cancels the document load.
`~window~open用の~noopenerを取得する@ ときは、 所与の ( `文書$ %~source文書, `有順序~map$ %特能~map, [`~URL~record$ / ~NULL ] %~URL ) に対し,次を遂行する: ◎ To get noopener for window open, given a Document sourceDocument, an ordered map tokenizedFeatures, and a URL record-or-null url, perform the following steps.\
-
~RET ~IS ~OR↓: ◎ They return a boolean.
- [ %~URL ~NEQ ~NULL ]~AND[ %~URL の`~blob~URL~entry$url ~NEQ ~NULL ]~AND[ 次の 2 つは`同じ~site$でない ] ⇒# %~URL の`~blob~URL~entry$urlの`環境$bUの`生成元$enV, %~source文書 に`関連な設定群~obj$の`~top-level生成元$enV ◎ If url is not null and url's blob URL entry is not null: • Let blobOrigin be url's blob URL entry's environment's origin. • Let topLevelOrigin be sourceDocument's relevant settings object's top-level origin. • If blobOrigin is not same site with topLevelOrigin, then return true.
- [ %特能~map[ `noopener^l ] ~NEQ ε ]~AND[ 次の結果 ~EQ ~T ] ⇒ `真偽-特能を構文解析する$( %特能~map[ `noopener^l ] ) ◎ Let noopener be false. ◎ If tokenizedFeatures["noopener"] exists, then set noopener to the result of parsing tokenizedFeatures["noopener"] as a boolean feature. ◎ Return noopener.
`~window~open手続き@ は、 所与の ( 文字列 %~URL, 文字列 %~target, 文字列 %特能~群 ) に対し,次を走らす: ◎ The window open steps, given a string url, a string target, and a string features, are as follows:
- ~IF[ 当の`~event~loop$の`終了n入子ng~level$ ~NEQ 0 ] ⇒ ~RET ~NULL ◎ If the event loop's termination nesting level is nonzero, then return null.
- %~source文書 ~LET `入口~大域~obj$に`結付けられた文書$ ◎ Let sourceDocument be the entry global object's associated Document.
- %~URL~record ~LET ~NULL ◎ Let urlRecord be null.
-
~IF[ %~URL ~NEQ 空~文字列 ]: ◎ If url is not the empty string, then:
- %~URL~record ~LET `~URLを符号化法の下で相対的に構文解析する$( %~URL, %~source文書 ) ◎ Set urlRecord to the result of encoding-parsing a URL given url, relative to sourceDocument.
- ~IF[ %~URL~record ~EQ `失敗^i ] ⇒ ~THROW `SyntaxError$E ◎ If urlRecord is failure, then throw a "SyntaxError" DOMException.
- ~IF[ %~target ~EQ 空~文字列 ] ⇒ %~target ~SET `_blank^l ◎ If target is the empty string, then set target to "_blank".
- %特能~map ~LET `特能~群を~token化する$( %特能~群 ) ◎ Let tokenizedFeatures be the result of tokenizing features.
- %noreferrer ~LET ~F ◎ Let noreferrer be false.
- ~IF[ %特能~map[ `noreferrer^l ] ~NEQ ε ] ⇒ %noreferrer ~SET `真偽-特能を構文解析する$( %特能~map[ `noreferrer^l ] ) ◎ If tokenizedFeatures["noreferrer"] exists, then set noreferrer to the result of parsing tokenizedFeatures["noreferrer"] as a boolean feature.
- %noopener ~LET `~window~open用の~noopenerを取得する$( %~source文書, %特能~map, %~URL~record ) ◎ Let noopener be the result of getting noopener for window open with sourceDocument, tokenizedFeatures, and urlRecord.
- %特能~map[ `noopener^l ] ~SET ε ◎ Remove tokenizedFeatures["noopener"]\
- %特能~map[ `noreferrer^l ] ~SET ε ◎ and tokenizedFeatures["noreferrer"].
- %~referrer施策 ~LET 空~文字列 ◎ Let referrerPolicy be the empty string.
- ~IF[ %noreferrer ~EQ ~T ] ⇒# %noopener ~SET ~T; %~referrer施策 ~SET `no-referrer^l ◎ If noreferrer is true, then set noopener to true and set referrerPolicy to "no-referrer".
-
( %~target~navigable, %~window種別 ) ~LET `~navigableを選ぶ規則$を適用する( %~target, %~source文書 の`~node~navigable$, %noopener ) ◎ Let targetNavigable and windowType be the result of applying the rules for choosing a navigable given target, sourceDocument's node navigable, and noopener.
例えば、 ~UAが[ control+~clickにより,~linkを新たな~UItabに開く ]ことを~supportしていて,利用者が[ 要素に対し それを行った ]とき,対する `onclick^m ~handlerは[ `iframe$e 内に~pageを開くために `window.open()@#dom-window-open$c ~APIを利用していた ]場合、 ~UAは[ ~target閲覧~文脈の選定を上書きして,新たな~UItabを~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.
- ~IF[ %~target~navigable ~EQ ~NULL ] ⇒ ~RET ~NULL ◎ If targetNavigable is null, then return null.
-
~IF[ %~window種別 ~IN { `制約されない新たな^i, `~openerが無い新たな^i } ]: ◎ If windowType is either "new and unrestricted" or "new with no opener", then:
- %~target~navigable にて`作動中な閲覧~文脈$navの`~popupか$bc ~SET `~popup~windowが要請されたか否か検査する$( %特能~map ) ◎ Set targetNavigable's active browsing context's is popup to the result of checking if a popup window is requested, given tokenizedFeatures.
- `閲覧~文脈の特能を設定しておく$( %~target~navigable にて`作動中な閲覧~文脈$nav, %特能~map ) `CSSOMVIEW$r ◎ Set up browsing context features for targetNavigable's active browsing context given tokenizedFeatures. [CSSOMVIEW]
- ~IF[ %~URL~record ~EQ ~NULL ] ⇒ %~URL~record ~SET `~about_blank$sc を表現する`~URL~record$ ◎ If urlRecord is null, then set urlRecord to a URL record representing about:blank.
-
~IF[ %~URL~record は`~about_blank に合致して$いる ] ⇒ `~URLと履歴を更新する$( %~target~navigable にて`作動中な文書$nav, %~URL~record ) ◎ If urlRecord matches about:blank, then perform the URL and history update steps given targetNavigable's active document and urlRecord.
注記: この段は、 %~URL が `about:blank?foo^l の様な何かである事例で必要yである。 %~URL は単に素な `~about_blank^sc の場合、 この段は何もしない。 ◎ This is necessary in case url is something like about:blank?foo. If url is just plain about:blank, this will do nothing.
- ~ELSE ⇒ `~navigableを~URLへ~navigateする$( %~target~navigable, %~URL~record, %~source文書 ) — 次も与える下で ⇒# `~referrer施策^i ~SET %~referrer施策, `例外を可能化するか^i ~SET ~T ◎ Otherwise, navigate targetNavigable to urlRecord using sourceDocument, with referrerPolicy set to referrerPolicy and exceptionsEnabled set to true.
-
~ELSE: ◎ Otherwise:
- ~IF[ %~URL~record ~NEQ ~NULL ] ⇒ `~navigableを~URLへ~navigateする$( %~target~navigable, %~URL~record, %~source文書 ) — 次も与える下で ⇒# `~referrer施策^i ~SET %~referrer施策, `例外を可能化するか^i ~SET ~T ◎ If urlRecord is not null, then navigate targetNavigable to urlRecord using sourceDocument, with referrerPolicy set to referrerPolicy and exceptionsEnabled set to true.
- ~IF[ %noopener ~EQ ~F ] ⇒ %~target~navigable にて`作動中な閲覧~文脈$navを`開いた閲覧~文脈$bc ~SET %~source文書 が`属する閲覧~文脈$ ◎ If noopener is false, then set targetNavigable's active browsing context's opener browsing context to sourceDocument's browsing context.
- ~IF[ %noopener ~EQ ~T ]~OR[ %~window種別 ~EQ `~openerが無い新たな^i ] ⇒ ~RET ~NULL ◎ If noopener is true or windowType is "new with no opener", then return null.
- ~RET %~target~navigable にて`作動中な~WindowProxy$nav ◎ Return targetNavigable's active WindowProxy.
`open(url, target, features)@m ~method手続きは ⇒ `~window~open手続き$( %url, %target, %features ) ◎ The open(url, target, features) method steps are to run the window open steps with url, target, and features.
注記: この~methodは、[ 既存の`閲覧~文脈$を`~navigate$する / `補助~閲覧~文脈$を開いて~navigateする ]ための仕組みを供する。 ◎ The method provides a mechanism for navigating an existing browsing context or opening and navigating an auxiliary browsing context.
`特能~群を~token化する@ ときは、 所与の ( 文字列 %特能~群 ) に対し,次を走らす: ◎ To tokenize the features argument:
- %特能~map ~LET 新たな`有順序~map$ ◎ Let tokenizedFeatures be a new ordered map.
- %位置 ~LET %特能~群 の最初の符号位置を指している`位置~変数$ ◎ Let position point at the first code point of features.
-
~WHILE[ %位置↗ ~NEQ ε ]: ◎ While position is not past the end of features:
- %名前 ~LET 空~文字列 ◎ Let name be the empty string.
- %値 ~LET 空~文字列 ◎ Let value be the empty string.
- %特能~群 内の %位置 から,`特能~分離子$である`符号位置~並びを収集する$ — これは、 特能~名より前に現れる分離子を読飛ばす ◎ Collect a sequence of code points that are feature separators from features given position. This skips past leading separators before the name.
- %名前 ~SET %特能~群 内の %位置 から,`特能~分離子$でない`符号位置~並びを収集する$ ◎ Collect a sequence of code points that are not feature separators from features given position.\
- %名前 ~SET `~ASCII小文字~化する$( %名前 ) ◎ Set name to the collected characters, converted to ASCII lowercase.
- %名前 ~SET `特能~名として正規化する$( %名前 ) ◎ Set name to the result of normalizing the feature name name.
-
~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 (=):
- ~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.
- %位置 ~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.
-
~IF[ %位置↗ ~IN { `特能~分離子$ } ]: ◎ If the code point at position in features is a feature separator:
-
~WHILE[ %位置↗ ~IN { `特能~分離子$ } ]: ◎ While position is not past the end of features and the code point at position in features is a feature separator:
- ~IF[ %位置↗ ~EQ `002C^U `,^smb ] ⇒ ~BREAK ◎ If the code point at position in features is U+002C (,), then break.
- %位置 ~INCBY 1 ◎ Advance position by 1.
注記: これは、 最初の非~分離子まで, かつ `002C^U `,^smb を過ぎない所まで読飛ばす ◎ This skips to the first non-separator but does not skip past a U+002C (,).
- %値 ~SET %特能~群 内の %位置 から,`特能~分離子$でない`符号位置~並びを収集する$ ◎ Collect a sequence of code points that are not feature separators code points from features given position.\
- %値 ~SET `~ASCII小文字~化する$( %値 ) ◎ Set value to the collected code points, converted to ASCII lowercase.
-
- ~IF[ %名前 ~NEQ 空~文字列 ] ⇒ %特能~map[ %名前 ] ~SET %値 ◎ If name is not the empty string, then set tokenizedFeatures[name] to value.
- ~RET %特能~map ◎ Return tokenizedFeatures.
`~window特能は設定されたか否か検査する@ ときは、 所与の ( %特能~map, %特能~名, %既定~値 ) に対し: ◎ To check if a window feature is set, given tokenizedFeatures, featureName, and defaultValue:
- ~IF[ %特能~map[ %特能~名 ] ~NEQ ε ] ⇒ ~RET `真偽-特能を構文解析する$( %特能~map[ %特能~名 ] ) ◎ If tokenizedFeatures[featureName] exists, then return the result of parsing tokenizedFeatures[featureName] as a boolean feature.
- ~RET %既定~値 ◎ Return defaultValue.
`~popup~windowが要請されたか否か検査する@ ときは、 所与の ( %特能~map ) に対し: ◎ To check if a popup window is requested, given tokenizedFeatures:
- ~IF[ %特能~map は`空$mapである ] ⇒ ~RET ~F ◎ If tokenizedFeatures is empty, then return false.
- ~IF[ %特能~map[ `popup^l ] ~NEQ ε ] ⇒ ~RET `真偽-特能を構文解析する$( %特能~map[ `popup^l ] ) ◎ If tokenizedFeatures["popup"] exists, then return the result of parsing tokenizedFeatures["popup"] as a boolean feature.
- %location ~LET `~window特能は設定されたか否か検査する$( %特能~map, `location^l, ~F ) ◎ Let location be the result of checking if a window feature is set, given tokenizedFeatures, "location", and false.
- %toolbar ~LET `~window特能は設定されたか否か検査する$( %特能~map, `toolbar^l, ~F ) ◎ Let toolbar be the result of checking if a window feature is set, given tokenizedFeatures, "toolbar", and false.
- ~IF[ %location ~EQ ~F ]~AND[ %toolbar ~EQ ~F ] ⇒ ~RET ~T ◎ If location and toolbar are both false, then return true.
- %menubar ~LET `~window特能は設定されたか否か検査する$( %特能~map, `menubar^l, ~F ) ◎ Let menubar be the result of checking if a window feature is set, given tokenizedFeatures, "menubar", and false.
- ~IF[ %menubar ~EQ ~F ] ⇒ ~RET ~T ◎ If menubar is false, then return true.
- %resizable ~LET `~window特能は設定されたか否か検査する$( %特能~map, `resizable^l, ~T ) ◎ Let resizable be the result of checking if a window feature is set, given tokenizedFeatures, "resizable", and true.
- ~IF[ %resizable ~EQ ~F ] ⇒ ~RET ~T ◎ If resizable is false, then return true.
- %scrollbars ~LET `~window特能は設定されたか否か検査する$( %特能~map, `scrollbars^l, ~F ) ◎ Let scrollbars be the result of checking if a window feature is set, given tokenizedFeatures, "scrollbars", and false.
- ~IF[ %scrollbars ~EQ ~F ] ⇒ ~RET ~T ◎ If scrollbars is false, then return true.
- %status ~LET `~window特能は設定されたか否か検査する$( %特能~map, `status^l, ~F ) ◎ Let status be the result of checking if a window feature is set, given tokenizedFeatures, "status", and false.
- ~IF[ %status ~EQ ~F ] ⇒ ~RET ~T ◎ If status is false, then return true.
- ~RET ~F ◎ Return false.
次に挙げる符号位置は、 `特能~分離子@ とされる ⇒# `~ASCII空白$, `003D^U `=^smb, `002C^U `,^smb ◎ A code point is a feature separator if it is ASCII whitespace, U+003D (=), or U+002C (,).
旧来の理由から、 一部の特能~名には別名がある — それらは、 次の~algoにより正規化される。 ◎ For legacy reasons, there are some aliases of some feature names.\
`真偽-特能を構文解析する@ ときは、 所与の ( 文字列 %値 ) に対し ⇒ ~RET ~IS ~OR↓: ◎ To parse a boolean feature given a string value:
- %値 ~IN【!identical】 { 空~文字列, `yes^l, `true^l } ◎ If value is the empty string, then return true. ◎ If value is "yes", then return true. ◎ If value is "true", then return true.
- 次の結果 ~NIN { `失敗^i, 0 } ⇒ `整数として構文解析する$( %値 ) ◎ Let parsed be the result of parsing value as an integer. ◎ If parsed is an error, then set it to 0. ◎ Return false if parsed is 0, and true otherwise.
`name@m 用の: ◎ ↓
- 取得子~手続きは: ⇒ ~RET コレに`対応する~navigable$ %N に応じて ⇒# ~NULL ならば 空~文字列 / ~ELSE_ %N の`~target名$nav ◎ The name getter steps are: • If this's navigable is null, then return the empty string. • Return this's navigable's target name.
-
設定子~手続きは ◎ The name setter steps are:
- ~IF[ コレに`対応する~navigable$ ~EQ ~NULL ] ⇒ ~RET ◎ If this's navigable is null, then return.
- コレに`対応する~navigable$にて`作動中な~session履歴~entry$navの`文書~状態$shEの`~navigable名$dS ~SET 所与の値 ◎ Set this's navigable's active session history entry's document state's navigable target name to the given value.
注記: 名前は、 ~navigable が別の`生成元$へ`~navigate$されたときは, `設定し直される@~HTMLnav#resetBCName$。 ◎ The name gets reset when the navigable is navigated to another origin.
`close()@m ~method手続きは: ◎ The close() method steps are:
- %この辿可能 ~LET コレに`対応する~navigable$ ◎ Let thisTraversable be this's navigable.
- ~IF[ %この辿可能 は`~top-level辿可能$でない ] ⇒ ~RET ◎ If thisTraversable is not a top-level traversable, then return.
- ~IF[ %この辿可能 の`閉中か$nav ~EQ ~T ] ⇒ ~RET ◎ If thisTraversable's is closing is true, then return.
- %閲覧~文脈 ~LET %この辿可能 にて`作動中な閲覧~文脈$nav ◎ Let browsingContext be thisTraversable's active browsing context.
- %~source~snapshot~params ~LET `~source~snapshot~paramsを~snapshotする$( %この辿可能 にて`作動中な文書$nav ) ◎ Let sourceSnapshotParams be the result of snapshotting source snapshot params given thisTraversable's active document.
-
~IF[ ~AND↓ ]… ◎ If all the following are true:
- %この辿可能 は`~scriptから閉じれる$ ◎ thisTraversable is script-closable;
- `現任な大域~obj$に`対応する閲覧~文脈$は %閲覧~文脈 に`近しい$ ◎ the incumbent global object's browsing context is familiar with browsingContext; and
- `現任な大域~obj$に`対応する~navigable$が %この辿可能 を`~navigateすることは~sandbox法により許容される$( %~source~snapshot~params ) ◎ the incumbent global object's navigable is allowed by sandboxing to navigate thisTraversable, given sourceSnapshotParams,
…ならば: ◎ then:
- %この辿可能 の`閉中か$nav ~SET ~T ◎ Set thisTraversable's is closing to true.
-
`~taskを~queueする$( `~DOM操作~task~source$, 次の手続き )
手続きは ⇒ `~top-level辿可能を確定的に閉じる$( %この辿可能 )◎ Queue a task on the DOM manipulation task source to definitely close thisTraversable.
~OR↓ を満たす`~navigable$は、 `~scriptから閉じれる@ とされる: ◎ A navigable is script-closable if\
- それにて`作動中な閲覧~文脈$navは、 ~scriptが作成した`補助~閲覧~文脈$である (利用者-動作ではなく) ◎ its active browsing context is an auxiliary browsing context that was created by a script (as opposed to by an action of the user),\
- 次を満たす`~top-level辿可能$である ⇒ その`~session履歴~entry群$navの`~size$ ~EQ 1 ◎ or if it is a top-level traversable whose session history entries's size is 1.
`stop()@m ~method手続きは: ◎ The stop() method steps are:
- %~navigable ~LET コレに`対応する~navigable$ ◎ ↓
- ~IF[ %~navigable ~EQ ~NULL ] ⇒ ~RET ◎ If this's navigable is null, then return.
- `読込ngを停止する$( %~navigable ) ◎ Stop loading this's navigable.
7.2.2.2. `Window^I ~obj上の有index~access
- %window.`length$m
- `文書~treeに属する子~navigable群$の~size【!the number of】を返す。 ◎ Returns the number of document-tree child navigables.
- %window[%index]
- %index で指示される[ `文書~treeに属する子~navigable群$内の~navigable ]に対応している `WindowProxy$I を返す。 ◎ Returns the WindowProxy corresponding to the indicated document-tree child navigables.
`length@m 取得子~手続きは ⇒ ~RET コレに`結付けられた文書$の`文書~treeに属する子~navigable群$の`~size$ ◎ The length getter steps are to return this's associated Document's document-tree child navigables's size.
注記: ~indexによる`文書~treeに属する子~navigable群$への~accessは、 `WindowProxy$I ~objの `GetOwnProperty$sl 内部~methodを通して定義される。 ◎ Indexed access to document-tree child navigables is defined through the [[GetOwnProperty]] internal method of the WindowProxy object.
7.2.2.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$ %~window の `文書~treeに属する子~navigable~target名~prop集合@ は、 次の手続きが返す結果で与えられる: ◎ The document-tree child navigable target name property set of a Window object window is the return value of running these steps:
- %子~群 ~LET %~window に`結付けられた文書$の`文書~treeに属する子~navigable群$ ◎ Let children be the document-tree child navigables of window's associated Document.
-
%有名~子~群 ~LET 新たな`有順序~map$ ◎ Let firstNamedChildren be an empty ordered set.
【 原文では`有順序~集合$を利用しているが、 `有順序~map$の方がずっと~logicが簡潔になるので,改めている。 】
-
%子~群 を成す ~EACH( %~navigable ) に対し: ◎ For each navigable of children:
- %名前 ~LET %~navigable の`~target名$nav ◎ Let name be navigable's target name.
- ~IF[ %名前 ~NEQ 空~文字列 ]~AND[ %有名~子~群[ %名前 ] ~EQ ε ] ⇒ %有名~子~群[ %名前 ] ~SET %~navigable ◎ If name is the empty string, then continue. ◎ If firstNamedChildren contains a navigable whose target name is name, then continue. ◎ Append navigable to firstNamedChildren.
- %名前~群 ~LET 新たな`有順序~集合$ ◎ Let names be an empty ordered set.
- %有名~子~群 を成す ~EACH( %名前 → %~navigable ) に対し ⇒ ~IF[ ( %~navigable の`作動中な文書$navの`生成元$doc, %~window に`関連な設定群~obj$の`生成元$enV ) は`同一-生成元$である ] ⇒ %名前~群 に %名前 を`付加する$ ◎ For each navigable of firstNamedChildren: • Let name be navigable's target name. • If navigable's active document's origin is same origin with window's relevant settings object's origin, then append name to names.
- ~RET %名前~群 ◎ Return names.
上の手続きにおける 2 つの別々な反復は、 次を意味する: 例えば次の~pageが `https://example.org/^c にて~hostされていて, `https://elsewhere.example/^c の `iframe^e の `name$m が `spices^l に設定されたとするとき、[ すべてが読込まれた後に `window.spices^c を評価した結果 ]は `undefined^jv 【すなわち, `spices^l ~NIN %名前~群 】になる: ◎ The two seperate iterations mean 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$ %~window が`~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:
- %~window の`文書~treeに属する子~navigable~target名~prop集合$ ◎ window's document-tree child navigable target name property set;
-
%~window 内にある`有名~要素$の`要素~名$ — `要素~名$が同じものが複数あるときは、 `~tree順序$で最初のもの以外は無視する。
%~window 内にある `有名~要素@, およびその `要素~名@ は、[ %~window に`結付けられた文書$を`根$とする`文書~tree内$にある`~HTML要素$ ]のうち,次のいずれかに該当する要素, および 対応する名前である:
- [ `embed$e, `form$e, `img$e, `object$e ]要素のうち,[ `name^a 内容~属性を有していて,その値 ~NEQ 空~文字列 ]なるもの — その属性~値が`要素~名$を与える
- [ `id$a 内容~属性を有していて,その値 ~NEQ 空~文字列 ]なるもの — その属性~値が`要素~名$を与える
【 `有名~要素$, `要素~名$は、 記述を論理的に集約するためにこの訳に導入した用語であり,この節でしか利用されない。 】
◎ the value of the name content attribute for all embed, form, img, and object elements that have a non-empty name content attribute and are in a document tree with window's associated 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 associated Document as their root.
`~window$ %~window 用の`有名~propの値を決定する手続き$は、 所与の ( %~window が`~supportする~prop名$ %名前 ) に対し,次を走らすモノトスル: ◎ To determine the value of a named property name in a Window object window, the user agent must return the value obtained using the following steps:
- %~obj群 ~LET %~window の[ 名前 %名前 を伴う`有名~obj$ ]たちが成す~list ◎ Let objects be the list of named objects of window with the name name.
- ~Assert【!Note → Assert】: %~obj群 は空でない ◎ There will be at least one such object, since the algorithm would otherwise not have been invoked by Web IDL.
-
~IF[ %~obj群 を成す ある~itemは`~navigable$である ]: ◎ If objects contains a navigable, then:
- %容器 ~LET %~window に`結付けられた文書$の`子孫$のうち次を満たす最初のもの ⇒ [ `~navigable容器$である ]~AND[ %容器 の`内容~navigable$ ~IN %~obj群 ] ◎ Let container be the first navigable container in window's associated Document's descendants whose content navigable is in objects.
- ~RET %容器 の`内容~navigable$にて`作動中な~WindowProxy$nav ◎ Return container's content navigable's active WindowProxy.
- ~Assert: %~obj群 は要素のみからなる ◎ ↓
- ~IF[ %~obj群 は 1 個の要素のみからなる ] ⇒ ~RET その要素 ◎ Otherwise, if objects has only one element, return that element.
- ~RET 次のようにされた `HTMLCollection$I ⇒# 根: %~window に`結付けられた文書$, ~filter: %~obj群 内にある要素のみに合致する ◎ Otherwise, return an HTMLCollection rooted at window's associated Document, whose filter matches only named objects of window with the name name. (By definition, these will all be elements.)
`~window$ %~window の[ 名前 %名前 を伴う `有名~obj@ ]は、 次に挙げるものからなる: ◎ Named objects of Window object window with the name name, for the purposes of the above algorithm, consist of the following:
- %~window に`結付けられた文書$の `文書~treeに属する子~navigable群$のうち,[ その`~target名$nav ~EQ %名前 ]なるもの ◎ document-tree child navigables of window's associated Document whose target name is name;
- %~window 内にある`有名~要素$のうち,[ その`要素~名$ ~EQ %名前 ]なるもの ◎ embed, form, img, or object elements that have a name content attribute whose value is name and are in a document tree with window's associated Document as their root; and ◎ HTML elements that have an id content attribute whose value is name and are in a document tree with window's associated Document as their root.
注記: `Window$I ~interfaceは, `Global$xA 拡張d属性を伴うので、 その有名~propたちは,[ `旧来の~platform~obj$ではなく,`有名~prop群~obj$ ]用の規則に従う。 ◎ Since the Window interface has the [Global] extended attribute, its named properties follow the rules for named properties objects rather than legacy platform objects.
7.2.2.4. 関係する~windowへの~access法
- %window.`top$m
- `~top-level辿可能$用の `WindowProxy$I を返す。 ◎ Returns the WindowProxy for the top-level traversable.
- %window.`opener$m [ = %value ]
- `開いた閲覧~文脈$bc用の `WindowProxy$I を返す。 ◎ Returns the WindowProxy for the opener browsing context.
- そのような閲覧~文脈は無い, あるいは ~NULL に設定された場合、 ~NULL を返す。 ◎ Returns null if there isn't one or if it has been set to null.
- ~NULL に設定できる。 ◎ Can be set to null.
- %window.`parent$m
- `親~navigable$用の `WindowProxy$I を返す。 ◎ Returns the WindowProxy for the parent navigable.
- %window.`frameElement$m
- `~navigable容器$を与えている要素を返す。 ◎ Returns the navigable container element.
- そのようなものがない, または “非同一-生成元 状況” にある場合、 ~NULL を返す。 ◎ Returns null if there isn't one, and in cross-origin situations.
`top@m 取得子~手続きは: ◎ The top getter steps are:
- %~navigable ~LET コレに`対応する~navigable$ ◎ ↓
- ~IF[ %~navigable ~EQ ~NULL ] ⇒ ~RET ~NULL ◎ If this's navigable is null, then return null.
- ~RET %~navigable の`~top-level辿可能$navにて`作動中な~WindowProxy$nav ◎ Return this's navigable's top-level traversable's active WindowProxy.
`opener@m 用の: ◎ ↓
-
取得子~手続きは: ◎ The opener getter steps are:
- %B ~LET コレに`対応する閲覧~文脈$ ◎ Let current be this's browsing context.
- ~IF[ %B ~EQ ~NULL ] ⇒ ~RET ~NULL ◎ If current is null, then return null.
- ~IF[ %B を`開いた閲覧~文脈$bc ~EQ ~NULL ] ⇒ ~RET ~NULL ◎ If current's opener browsing context is null, then return null.
- ~RET %B を`開いた閲覧~文脈$bcの `WindowProxy$I ~obj ◎ Return current's opener browsing context's WindowProxy object.
-
設定子~手続きは: ◎ The opener setter steps are:
- ~IF[ 所与の値 ~NEQ ~NULL ] ⇒ ~ABRUPT `DefinePropertyOrThrow$jA( コレ, `opener^l, { `Value^sl: 所与の値, `Writable^sl: ~T, `Enumerable^sl: ~T, `Configurable^sl: ~T } )
- ~ELIF[ コレに`対応する閲覧~文脈$ ~NEQ ~NULL ] ⇒# コレに`対応する閲覧~文脈$を`開いた閲覧~文脈$bc ~SET ~NULL
注記: `~window$の `opener$m を ~NULL に設定すると, それを`開いた閲覧~文脈$bc %B への参照を~clearする。 これは,実施においては、 ~scriptが未来に %B に対応する`~window$へ~accessすることを防止する。 ◎ Setting window.opener to null clears the opener browsing context reference. In practice, this prevents future scripts from accessing their opener browsing context's Window object.
既定では,~scriptは、 `opener$m 取得子を通して, %B に対応する`~window$へ~accessできる — 例: ~scriptは、 `window.opener.location^c を設定でき, %B を~navigateさせれる。 ◎ By default, scripts can access their opener browsing context's Window object through the window.opener getter. E.g., a script can set window.opener.location, causing the opener browsing context to navigate.
`parent@m 取得子~手続きは: ◎ The parent getter steps are:
- %~navigable ~LET コレに`対応する~navigable$ ◎ Let navigable be this's navigable.
- ~IF[ %~navigable ~EQ ~NULL ] ⇒ ~RET ~NULL ◎ If navigable is null, then return null.
- ~IF[ %~navigable の`親$nav ~NEQ ~NULL ] ⇒ %~navigable ~SET %~navigable の`親$nav ◎ If navigable's parent is not null, then set navigable to navigable's parent.
- ~RET %~navigable にて`作動中な~WindowProxy$nav ◎ Return navigable's active WindowProxy.
`frameElement@m 取得子~手続きは: ◎ The frameElement getter steps are:
- %N ~LET コレの`~node~navigable$ ◎ Let current be this's node navigable.
- ~IF[ %N ~EQ ~NULL ] ⇒ ~RET ~NULL ◎ If current is null, then return null.
- %容器 ~LET %N の`容器$nav ◎ Let container be current's container.
- ~IF[ %容器 ~EQ ~NULL ] ⇒ ~RET ~NULL ◎ If container is null, then return null.
- ~IF[ ( %容器 の`~node文書$の`生成元$doc, `現在の設定群~obj$の`生成元$enV ) は`同じ生成元~domain$でない ] ⇒ ~RET ~NULL ◎ If container's node document's origin is not same origin-domain with the current settings object's origin, then return null.
- ~RET %容器 ◎ Return container.
これらの~propが ~NULL を返し得る例: ◎ An example of when these properties can return null is as follows:
<!DOCTYPE html> <iframe></iframe> <script> "use strict"; const %element = document.querySelector("iframe"); const %iframeWindow = %element.contentWindow; %element.remove(); console.assert(%iframeWindow.top === null); console.assert(%iframeWindow.parent === null); console.assert(%iframeWindow.frameElement === null); </script>
この例の %iframeWindow に対応する`閲覧~文脈$は、 %element が文書から除去されたとき, `~NULL化@~HTMLlifecycle#destroy-a-document$される。 ◎ Here the browsing context corresponding to iframeWindow was nulled out when element was removed from the document.
7.2.2.5. 歴史的な~browser~UI要素~API
歴史的な理由から、 `Window$I ~interfaceには, ある種の~web~browser~UI要素の可視性を表現していた いくつかの~propがある。 ◎ For historical reasons, the Window interface had some properties that represented the visibility of certain web browser interface elements.
~privacyと相互運用能の理由から、 それらの~propは, 今や `Window$I に`対応する閲覧~文脈$の`~popupか$bcを表現する真偽-値を返す。 ◎ For privacy and interoperability reasons, those properties now return values that represent whether the Window's browsing context's is popup property is true or false.
各~UI要素は、 `BarProp$I ~objにより表現される: ◎ Each interface element is represented by a BarProp object:
[Exposed=Window] 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
- [ %window は~popupでないならば ~T / ~ELSE_ ~F ]を返す。 ◎ Returns true if the Window is not a popup; otherwise, returns false.
`visible@m 取得子~手続きは: ◎ The visible getter steps are:
- %閲覧~文脈 ~LET コレに`関連な大域~obj$に`対応する閲覧~文脈$ ◎ Let browsingContext be this's relevant global object's browsing context.
- ~IF[ %閲覧~文脈 ~EQ ~NULL ] ⇒ ~RET ~F ◎ If browsingContext is null, then return true.
- ~RET ~IS[ %閲覧~文脈 の`~top-level閲覧~文脈$bcの`~popupか$bc ~EQ ~F ] ◎ Return the negation of browsingContext's top-level browsing context's is popup.
以下に挙げる各種 `BarProp$I ~objは、 各 `Window$I ~obj用に存在するモノトスル: ◎ The following BarProp objects must exist for each Window object:
- `~location-bar@bP ◎ The location bar BarProp object
- 歴史的に,[ ~browserの~URL~barを表示する~control ]を包含する~UI要素を表現していた。 ◎ Historically represented the user interface element that contains a control that displays the browser's location bar.
- `~menu-bar@bP ◎ The menu bar BarProp object
- 歴史的に,[ ~menu~form内の~commandの~list, またはそれに類似な~UI概念 ]を包含する~UI要素を表現していた。 ◎ Historically represented 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^en )” ~pageを指す~link, またはそれに類似な~UI概念 ]を包含する~UI要素を表現していた。 ◎ Historically represented 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概念 ]を包含する~UI要素を表現していた。 ◎ Historically represented 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装置が現在~指示している要素 ]についての情報を供していた。 ◎ Historically represented 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 currently indicating.
- `~toolbar@bP ◎ The toolbar BarProp object
- 歴史的に,[ 利用者の媒体に応じて適切に,文書の直上や直下に見出される~UI要素 ]を表現していた。 それは概して,`~session履歴~辿り@~HTMLnav#apply-the-traverse-history-step$用の~control(戻る/進む/読込直す, 等々の~button)を供していた。 ◎ Historically represented 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.).
`status@m 属性は、 歴史的な理由から存在する — 次に従うモノトスル:
- 取得子は、 最後に設定された文字列を返す。
- 設定子は、 自身を所与の値に設定する。
- `~window$の作成-時には、 空~文字列に設定する。
この属性は、 他には何もしない。
◎ 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.2.2.6. `Window^I ~obj用の~script設定群
`~window用に環境~設定群~objを設定しておく@ ときは、 所与の ⇒# `~URL$ %作成時の~URL, `~JS実行~文脈$ %実行~文脈, ~NULL または`環境$ %予約-済み環境, `~URL$ %~top-level作成時の~URL, `生成元$ %~top-level生成元 ◎終 に対し,次を走らす: ◎ To set up a window environment settings object, given a URL creationURL, a JavaScript execution context execution context, null or an environment reservedEnvironment, a URL topLevelCreationURL, and an origin topLevelOrigin, run these steps:
- %~realm ~LET %実行~文脈 の~Realm成分の値 ◎ Let realm be the value of execution context's Realm component.
- %~window ~LET %~realm の`大域~obj$rM ◎ Let window be realm's global object.
-
%設定群~obj ~LET 新たな`環境~設定群~obj$ — その各種~algoは、 以下に従って定義される。 以下における %現~文書 は、 ~algoが呼出された時点で %~window に`結付けられた文書$を表すとする: ◎ Let settings object be a new environment settings object whose algorithms are defined as follows:
- `~realm実行~文脈$enV ⇒ ~RET %実行~文脈 ◎ The realm execution context • Return execution context.
- `~module~map$enV ⇒ ~RET %現~文書 の`~module~map$doc ◎ The module map • Return the module map of window's associated Document.
- `~API用~基底~URL$enV ⇒ ~RET %現~文書 の現在の`基底~URL$doc ◎ The API base URL • Return the current base URL of window's associated Document.
- `生成元$enV ⇒ ~RET %現~文書 の`生成元$doc ◎ The origin • Return the origin of window's associated Document.
- `施策~容器$enV ⇒ ~RET %現~文書 の`施策~容器$doc ◎ The policy container • Return the policy container of window's associated Document.
- `非同一-生成元~能力は隔離されるか?$enV ⇒ ~RET ~IS[ %~realm の`~agent~cluster$の`非同一-生成元~隔離~mode$agC ~EQ `concrete$l ]~AND[ %現~文書 には `cross-origin-isolated$l 特能の`利用は許容されて$いる ] ◎ The cross-origin isolated capability • Return true if both of the following hold, and false otherwise: •• realm's agent cluster's cross-origin-isolation mode is "concrete", and •• window's associated Document is allowed to use the "cross-origin-isolated" feature.
- `時刻~起点$enV ⇒ ~RET %現~文書 の`~load計時~報$docの`~navi開始~時刻$ ◎ The time origin • Return window's associated Document's load timing info's navigation start time.
-
~IF[ %予約-済み環境 ~NEQ ~NULL ]: ◎ If reservedEnvironment is non-null, then:
- %設定群~obj の ⇒# `~ID$enV ~SET %予約-済み環境 の`~ID$enV, `~target閲覧~文脈$enV ~SET %予約-済み環境 の`~target閲覧~文脈$enV, `作動中な~sw$enV ~SET %予約-済み環境 の`作動中な~sw$enV ◎ Set settings object's id to reservedEnvironment's id, target browsing context to reservedEnvironment's target browsing context, and active service worker to reservedEnvironment's active service worker.
-
%予約-済み環境 の`~ID$enV ~SET 空~文字列 ◎ Set reservedEnvironment's id to the empty string.
注記: この時点から, %予約-済み環境 の~ID( `identity^en )は %設定群~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.
- ~ELSE ⇒ %設定群~obj の ⇒# `~ID$enV ~SET 新たな一意かつ不透明な文字列, `~target閲覧~文脈$enV ~SET ~NULL, `作動中な~sw$enV ~SET ~NULL ◎ Otherwise, set settings object's id to a new unique opaque string, settings object's target browsing context to null, and settings object's active service worker to null.
- %設定群~obj の ⇒# `作成時の~URL$enV ~SET %作成時の~URL, `~top-level作成時の~URL$enV ~SET %~top-level作成時の~URL, `~top-level生成元$enV ~SET %~top-level生成元 ◎ Set settings object's creation URL to creationURL, settings object's top-level creation URL to topLevelCreationURL, and settings object's top-level origin to topLevelOrigin.
- %~realm の `HostDefined^sl ~field ~SET %設定群~obj ◎ Set realm's [[HostDefined]] field to settings object.
-
~RET %設定群~obj
【 この段は、 この訳による追加 — 他所において,この %設定群~obj を参照している箇所があるので。 】
7.2.3. `WindowProxy^I ~exotic~obj
【 この節を成す内容は、 `別~page@~HTMLWPROXY#the-windowproxy-exotic-object$にて。 】
7.2.4. `Location^I ~interface
各 `~window$には、 その作成-時に,新たな `Location$I ~objが結付けられる。 【!* unique instance of 〜 allocated】
【 以下,ここでは、 この節を成す内容のうち,~APIに関する部分のみ述べる。 他の内容は、 `別~page@~HTMLWPROXY#the-location-interface$にて。 】
- %document.`location$m0 [ = %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 の `location@m0 取得子~手続きは ◎ The Document object's location getter steps are\
- ~IF[ コレは`全部的に作動中$である ] ⇒ ~RET コレに`関連な大域~obj$の `Location$I ~obj ◎ to return this's relevant global object's Location object, if this is fully active,\
- ~RET ~NULL ◎ and null otherwise.
`Location$I ~objは、[ それに結付けられた`文書$の`~URL$docの表現 ]および[ それに結付けられた`~navigable$を[ `~navigate$する/`読込直す@~HTMLnav#reload$ ]ための~method ]を供する。 ◎ Location objects provide a representation of the URL of their associated Document, as well as methods for navigating and reloading the associated navigable.
[Exposed=Window]
interface `Location@I { /*
ただし、[
`追加的な作成~手続き@~HTMLWPROXY#the-location-interface$,
`上書きされた内部~method@~HTMLWPROXY#location-internal-methods$
]も見よ。
◎
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(url)$m
- %url へ~navigateする。 ◎ Navigates to the given URL.
- %location.`replace(url)$m
- ~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
- `DOMStringList$I ~objを返す — それは、 `先祖~navigable群$を成す各`~navigable$にて`作動中な文書$navの生成元からなる。 ◎ Returns a DOMStringList object listing the origins of the ancestor navigables' active documents.
各 `Location$I ~obj %L には、 次が定義される: ◎ ↓
- `関連な文書@Loc
- %L に`関連な大域~obj$に`対応する閲覧~文脈$ %B に応じて ⇒# ~NULL ならば ~NULL / ~ELSE_ %B にて`作動中な文書$bc ◎ A Location object has an associated relevant Document, which is its 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 の作成-時に、[ 次の手続きの結果で与えられる文字列の~list ]が結付けられた `DOMStringList$I ~objに設定するモノトスル: ◎ 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:
- %出力 ~LET 新たな`~list$ ◎ Let output be a new list of strings.
- %現在の文書 ~LET %L に`関連な文書$Loc ◎ Let current be the Location object's relevant Document.
-
~WHILE[ %現在の文書 の`容器~文書$doc ~NEQ ~NULL ] ◎ While current's container document is non-null:
- %現在の文書 ~SET %現在の文書 の`容器~文書$doc ◎ Set current to current's container document.
- %出力 に次の結果を`付加する$ ⇒ `生成元を直列化する$( %現在の文書 の`生成元$doc ) ◎ Append the serialization of current's origin to output.
- ~RET %出力 ◎ Return output.
- 【 この仕様の中では、 `ancestorOrigins$m のみから利用される。 ~swからも利用されている。 】
`~Location~objにより~navigateする@ ときは、 所与の ( `Location$I ~obj %L, `~URL$ %~URL, `NavigationHistoryBehavior$I %履歴~取扱い (省略時は `auto$hH ) ) に対し: ◎ To Location-object navigate a Location object location to a URL url, optionally given a NavigationHistoryBehavior historyHandling (default "auto"):
- %~navigable ~LET %L に`関連な大域~obj$に`対応する~navigable$ ◎ Let navigable be location's relevant global object's navigable.
- %~source文書 ~LET `現任な大域~obj$に`結付けられた文書$ ◎ Let sourceDocument be the incumbent global object's associated Document.
- ~IF[ %L に`関連な文書$Locは まだ`完全に読込まれ$ていない ]~AND[ `現任な大域~obj$は`一過な作動化を有して$いない ] ⇒ %履歴~取扱い ~SET `replace$hH ◎ If location's relevant Document is not yet completely loaded, and the incumbent global object does not have transient activation, then set historyHandling to "replace".
- `~navigableを~URLへ~navigateする$( %~navigable, %~URL, %~source文書 ) — 次も与える下で ⇒# `例外を可能化するか^i ~SET ~T, `履歴~取扱い^i ~SET %履歴~取扱い ◎ Navigate navigable to url using sourceDocument, with exceptionsEnabled set to true and historyHandling set to historyHandling.
`Location$I ~obj %L の `生成元~domainを検査する@ ときは、 次を走らす:
- %文書 ~LET %L に`関連な文書$Loc
- ~IF[ %文書 ~NEQ ~NULL ]~AND[ ( %文書 の`生成元$doc, `入口~設定群~obj$の`生成元$enV ) は`同じ生成元~domain$でない ] ⇒ ~THROW `SecurityError$E
【 この手続きは、 以下を簡潔に記すためにこの訳に導入している。 】
`href@m 用の: ◎ ↓
-
取得子~手続きは: ◎ The href getter steps are:
- コレの`生成元~domainを検査する$ ◎ If this'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.
- ~RET `~URLを直列化する$( コレが指す`~URL$Loc ) ◎ Return this's url, serialized.
-
設定子~手続きは: ◎ The href setter steps are:
- ~IF[ コレに`関連な文書$Loc ~EQ ~NULL ] ⇒ ~RET ◎ If this's relevant Document is null, then return.
- %~URL ~LET `~URLを符号化法の下で相対的に構文解析する$( 所与の値, `入口~設定群~obj$ ) ◎ Let url be the result of encoding-parsing a URL given the given value, relative to the entry settings object.
- ~IF[ %~URL ~EQ `失敗^i ] ⇒ ~THROW `SyntaxError$E ◎ If url is failure, then throw a "SyntaxError" DOMException. s
- `~Location~objにより~navigateする$( コレ, %~URL ) ◎ Location-object navigate this to url.
注記: `href$m 設定子に対しては、 意図的に~security検査は行われない。 ◎ The href setter intentionally has no security check.
`origin@m 取得子~手続きは: ◎ The origin getter steps are:
- コレの`生成元~domainを検査する$ ◎ If this'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.
- ~RET `生成元を直列化する$( コレが指す`~URL$Locの`生成元$url ) ◎ Return the serialization of this's url's origin.
`protocol@m 用の: ◎ ↓
-
取得子~手続きは: ◎ The protocol getter steps are:
- コレの`生成元~domainを検査する$ ◎ If this'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.
- ~RET 次を順に連結した結果 ⇒# コレが指す`~URL$Locの`~scheme$url, `:^l ◎ Return this's url's scheme, followed by ":".
-
設定子~手続きは: ◎ The protocol setter steps are:
- ~IF[ コレに`関連な文書$Loc ~EQ ~NULL ] ⇒ ~RET ◎ If this's relevant Document is null, then return.
- コレの`生成元~domainを検査する$ ◎ If this's relevant Document's origin is not same origin-domain with the entry settings object's origin, then throw a "SecurityError" DOMException.
- %複製~URL ~LET コレが指す`~URL$Locの複製 ◎ Let copyURL be a copy of this's url.
- %~protocol文字列 ~LET 次を順に連結した結果 ⇒# 所与の値, `:^l ◎ ↓
-
%失敗かも ~LET `~API用に~URL構文解析する$( %~protocol文字列, %複製~URL, `~scheme開始$uST ) ◎ 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".
- ~IF[ %失敗かも ~EQ `失敗^i ] ⇒ ~THROW `SyntaxError$E ◎ If possibleFailure is failure, then throw a "SyntaxError" DOMException.
- ~IF[ %複製~URL の `~scheme$urlは`~HTTP_S~scheme$である ] ⇒ ~RET ◎ If copyURL's scheme is not an HTTP(S) scheme, then terminate these steps.
- `~Location~objにより~navigateする$( コレ, %複製~URL ) ◎ Location-object navigate this to copyURL.
`host@m 用の: ◎ ↓
-
取得子~手続きは: ◎ The host getter steps are:
- コレの`生成元~domainを検査する$ ◎ If this'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.
- %~URL ~LET コレが指す`~URL$Loc ◎ Let url be this's url.
- ~IF[ %~URL の`~host$url ~EQ ~NULL ] ⇒ ~RET 空~文字列 ◎ If url's host is null, return the empty string.
- %~host文字列 ~LET `~hostを直列化する$( %~URL の`~host$url ) ◎ ↓
- ~IF[ %~URL の`~port$url ~EQ ~NULL ] ⇒ ~RET %~host文字列 ◎ If url's port is null, return url's host, serialized.
- ~RET 次を順に連結した結果 ⇒# %~host文字列, `:^l, `整数を直列化する$( %~URL の`~port$url ) ◎ Return url's host, serialized, followed by ":" and url's port, serialized.
-
設定子~手続きは: ◎ The host setter steps are:
- ~IF[ コレに`関連な文書$Loc ~EQ ~NULL ] ⇒ ~RET ◎ If this's relevant Document is null, then return.
- コレの`生成元~domainを検査する$ ◎ If this's relevant Document's origin is not same origin-domain with the entry settings object's origin, then throw a "SecurityError" DOMException.
- %複製~URL ~LET コレが指す`~URL$Locの複製 ◎ Let copyURL be a copy of this's url.
- ~IF[ %複製~URL は`不透明な~path$を持つ ] ⇒ ~RET ◎ If copyURL has an opaque path, then return.
- `~API用に~URL構文解析する$( 所与の値, %複製~URL, `~host$uST ) ◎ Basic URL parse the given value, with copyURL as url and host state as state override.
- `~Location~objにより~navigateする$( コレ, %複製~URL ) ◎ Location-object navigate this to copyURL.
`hostname@m 用の: ◎ ↓
-
取得子~手続きは: ◎ The hostname getter steps are:
- コレの`生成元~domainを検査する$ ◎ If this'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.
- ~IF[ コレが指す`~URL$Locの `~host$url ~EQ ~NULL ] ⇒ ~RET 空~文字列 ◎ If this's url's host is null, return the empty string.
- ~RET `~hostを直列化する$( コレが指す`~URL$Locの`~host$url ) ◎ Return this's url's host, serialized.
-
設定子~手続きは: ◎ The hostname setter steps are:
- ~IF[ コレに`関連な文書$Loc ~EQ ~NULL ] ⇒ ~RET ◎ If this's relevant Document is null, then return.
- コレの`生成元~domainを検査する$ ◎ If this's relevant Document's origin is not same origin-domain with the entry settings object's origin, then throw a "SecurityError" DOMException.
- %複製~URL ~LET コレが指す`~URL$Locの複製 ◎ Let copyURL be a copy of this's url.
- ~IF[ %複製~URL は`不透明な~path$を持つ ] ⇒ ~RET ◎ If copyURL has an opaque path, then return.
- `~API用に~URL構文解析する$( 所与の値, %複製~URL, `~hostname$uST ) ◎ Basic URL parse the given value, with copyURL as url and hostname state as state override.
- `~Location~objにより~navigateする$( コレ, %複製~URL ) ◎ Location-object navigate this to copyURL.
`port@m 用の: ◎ ↓
-
取得子~手続きは: ◎ The port getter steps are:
- コレの`生成元~domainを検査する$ ◎ If this'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.
- ~IF[ コレが指す`~URL$Locの`~port$url ~EQ ~NULL ] ⇒ ~RET 空~文字列 ◎ If this's url's port is null, return the empty string.
- ~RET `整数を直列化する$( コレが指す`~URL$Locの`~port$url ) ◎ Return this's url's port, serialized.
-
設定子~手続きは: ◎ The port setter steps are:
- ~IF[ コレに`関連な文書$Loc ~EQ ~NULL ] ⇒ ~RET ◎ If this's relevant Document is null, then return.
- コレの`生成元~domainを検査する$ ◎ If this's relevant Document's origin is not same origin-domain with the entry settings object's origin, then throw a "SecurityError" DOMException.
- %複製~URL ~LET コレが指す`~URL$Locの複製 ◎ Let copyURL be a copy of this's url.
- ~IF[ %複製~URL は `~username/~password/~portを有し得ない$ ] ⇒ ~RET ◎ If copyURL cannot have a username/password/port, then return.
- ~IF[ 所与の値 ~EQ 空~文字列 ] ⇒ %複製~URL の`~port$url ~SET ~NULL ◎ If the given value is the empty string, then set copyURL's port to null.
- ~ELSE ⇒ `~API用に~URL構文解析する$( 所与の値, %複製~URL, `~port$uST ) ◎ Otherwise, basic URL parse the given value, with copyURL as url and port state as state override.
- `~Location~objにより~navigateする$( コレ, %複製~URL ) ◎ Location-object navigate this to copyURL.
`pathname@m 用の: ◎ ↓
-
取得子~手続きは: ◎ The pathname getter steps are:
- コレの`生成元~domainを検査する$ ◎ If this'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.
- ~RET `~URL~pathを直列化する$( コレが指す`~URL$Loc ) ◎ Return the result of URL path serializing this Location object's url.
-
設定子~手続きは: ◎ The pathname setter steps are:
- ~IF[ コレに`関連な文書$Loc ~EQ ~NULL ] ⇒ ~RET ◎ If this's relevant Document is null, then return.
- コレの`生成元~domainを検査する$ ◎ If this's relevant Document's origin is not same origin-domain with the entry settings object's origin, then throw a "SecurityError" DOMException.
- %複製~URL ~LET コレが指す`~URL$Locの複製 ◎ Let copyURL be a copy of this's url.
- ~IF[ %複製~URL は`不透明な~path$を持つ ] ⇒ ~RET ◎ If copyURL has an opaque path, then return.
- %複製~URL の`~path$url ~SET 空~list ◎ Set copyURL's path to the empty list.
- `~API用に~URL構文解析する$( 所与の値, %複製~URL, `~path開始$uST ) ◎ Basic URL parse the given value, with copyURL as url and path start state as state override.
- `~Location~objにより~navigateする$( コレ, %複製~URL ) ◎ Location-object navigate this to copyURL.
`search@m 用の: ◎ ↓
-
取得子~手続きは: ◎ The search getter steps are:
- コレの`生成元~domainを検査する$ ◎ If this'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.
- ~IF[ コレが指す`~URL$Locの`~query$url ~IN { ~NULL, 空~文字列 } ] ⇒ ~RET 空~文字列 ◎ If this's url's query is either null or the empty string, return the empty string.
- ~RET 次を順に連結した結果 ⇒# `?^l, コレが指す`~URL$Locの`~query$url ◎ Return "?", followed by this's url's query.
-
設定子~手続きは: ◎ The search setter steps are:
- ~IF[ コレに`関連な文書$Loc ~EQ ~NULL ] ⇒ ~RET ◎ If this's relevant Document is null, then return.
- コレの`生成元~domainを検査する$ ◎ If this's relevant Document's origin is not same origin-domain with the entry settings object's origin, then throw a "SecurityError" DOMException.
- %複製~URL ~LET コレが指す`~URL$Locの複製 ◎ Let copyURL be a copy of this's url.
- ~IF[ 所与の値 ~EQ 空~文字列 ] ⇒ %複製~URL の`~query$url ~SET ~NULL ◎ If the given value is the empty string, set copyURL's query to null.
-
~ELSE: ◎ Otherwise, run these substeps:
- %入力 ~LET 所与の値 ◎ ↓
- ~IF[ %入力 の最初の文字 ~EQ `?^l ] ⇒ %入力 から最初の文字を除去する ◎ Let input be the given value with a single leading "?" removed, if any.
- %複製~URL の`~query$url ~SET 空~文字列 ◎ Set copyURL's query to the empty string.
- `~API用に~URL構文解析する$( %入力, %複製~URL, `~query$uST, 【コレに】`関連な文書$Locの`符号化法$doc ) ◎ Basic URL parse input, with null, the relevant Document's document's character encoding, copyURL as url, and query state as state override.
- `~Location~objにより~navigateする$( コレ, %複製~URL ) ◎ Location-object navigate this to copyURL.
`hash@m 用の: ◎ ↓
-
取得子~手続きは: ◎ The hash getter steps are:
- コレの`生成元~domainを検査する$ ◎ If this'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.
- ~IF[ コレが指す`~URL$Locの`素片$url ~IN { ~NULL, 空~文字列 } ] ⇒ ~RET 空~文字列 ◎ If this's url's fragment is either null or the empty string, return the empty string.
- ~RET 次を順に連結した結果 ⇒# `#^l, コレが指す`~URL$Locの`素片$url ◎ Return "#", followed by this's url's fragment.
-
設定子~手続きは: ◎ The hash setter steps are:
- ~IF[ コレに`関連な文書$Loc ~EQ ~NULL ] ⇒ ~RET ◎ If this's relevant Document is null, then return.
- コレの`生成元~domainを検査する$ ◎ If this's relevant Document's origin is not same origin-domain with the entry settings object's origin, then throw a "SecurityError" DOMException.
- %複製~URL ~LET コレが指す`~URL$Locの複製 ◎ Let copyURL be a copy of this's url.
- %入力 ~LET 所与の値 ◎ ↓
- ~IF[ %入力 の最初の文字 ~EQ `#^l ] ⇒ %入力 から最初の文字を除去する ◎ Let input be the given value with a single leading "#" removed, if any.
- %複製~URL の`素片$url ~SET 空~文字列 ◎ Set copyURL's fragment to the empty string.
- `~API用に~URL構文解析する$( %入力, %複製~URL, `素片$uST ) ◎ Basic URL parse input, with copyURL as url and fragment state as state override.
-
~IF[ %複製~URL の`素片$url ~EQ コレの`~URL$Locの`素片$url ] ⇒ ~RET ◎ If copyURL's fragment is this's url's fragment, then return.
注記: この脱出措置は、 配備-済みな内容のうち[ ~scrollに対し `location.hash^c を`冗長に設定するもの@https://bugzilla.mozilla.org/show_bug.cgi?id=1733797#c2$ ]との互換性に必要yである。 それは、 素片~naviを成す他の仕組み — `href$m 設定子や `assign()$m など — には適用されない。 ◎ This bailout is necessary for compatibility with deployed content, which redundantly sets location.hash on scroll. It does not apply to other mechanisms of fragment navigation, such as the location.href setter or location.assign().
- `~Location~objにより~navigateする$( コレ, %複製~URL ) ◎ Location-object navigate this to copyURL.
注記: `a$e, `area$e 要素~用の等価な~APIと違って, `hash$m 設定子は、[ 空~文字列を,配備-済みな~scriptと互換にするよう特別に扱う ]ことはない。 ◎ Unlike the equivalent API for the a and area elements, the hash setter does not special case the empty string, to remain compatible with deployed scripts.
`assign(url)@m ~method手続きは: ◎ The assign(url) method steps are:
- ~IF[ コレに`関連な文書$Loc ~EQ ~NULL ] ⇒ ~RET ◎ If this's relevant Document is null, then return.
- コレの`生成元~domainを検査する$ ◎ If this's relevant Document's origin is not same origin-domain with the entry settings object's origin, then throw a "SecurityError" DOMException.
- %~URL~record ~LET `~URLを符号化法の下で相対的に構文解析する$( %url, `入口~設定群~obj$ ) ◎ Let urlRecord be the result of encoding-parsing a URL given url, relative to the entry settings object.
- ~IF[ %~URL~record ~EQ `失敗^i ] ⇒ ~THROW `SyntaxError$E ◎ If urlRecord is failure, then throw a "SyntaxError" DOMException.
- `~Location~objにより~navigateする$( コレ, %~URL~record ) ◎ Location-object navigate this to urlRecord.
`replace(url)@m ~method手続きは: ◎ The replace(url) method steps are:
- ~IF[ コレに`関連な文書$Loc ~EQ ~NULL ] ⇒ ~RET ◎ If this's relevant Document is null, then return.
- %~URL~record ~LET `~URLを符号化法の下で相対的に構文解析する$( %url, `入口~設定群~obj$ ) ◎ Let urlRecord be the result of encoding-parsing a URL given url, relative to the entry settings object.
- ~IF[ %~URL~record ~EQ `失敗^i ] ⇒ ~THROW `SyntaxError$E ◎ If urlRecord is failure, then throw a "SyntaxError" DOMException.
- `~Location~objにより~navigateする$( コレ, %~URL~record, `replace$hH ) ◎ Location-object navigate this to urlRecord given "replace".
注記: `replace()$m ~methodに対しては、 ~security検査は意図的に行われない。 ◎ The replace() method intentionally has no security check.
`reload()@m ~method手続きは: ◎ The reload() method steps are:
- %文書 ~LET コレに`関連な文書$Loc ◎ Let document be this's relevant Document.
- ~IF[ %文書 ~EQ ~NULL ] ⇒ ~RET ◎ If document is null, then return.
- コレの`生成元~domainを検査する$ ◎ If document's origin is not same origin-domain with the entry settings object's origin, then throw a "SecurityError" DOMException.
- `~navigableを読込直す$( %文書 の`~node~navigable$ ) ◎ Reload document's node navigable.
`ancestorOrigins@m 取得子~手続きは: ◎ The ancestorOrigins getter steps are:
- ~IF[ コレに`関連な文書$Loc ~EQ ~NULL ] ⇒ ~RET 空`~list$† ◎ If this's relevant Document is null, then return an empty list.
- コレの`生成元~domainを検査する$ ◎ If this's relevant Document's origin is not same origin-domain with the entry settings object's origin, then throw a "SecurityError" DOMException.
- ~RET コレの`先祖~生成元~list$ ◎ Otherwise, return this's ancestor origins list.
`ancestorOrigins$m 属性がどう働くかの詳細は、 まだ異論があり,変更され得る。 更なる情報は、 `課題 #1918@~HTMLissue/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$が空にされるのかもしれない。 】
【 以下,この節, およびその各 下位節の内容は、 `別~page@~HTMLWPROXY#the-location-interface$にて。 】
7.2.5. `History^I ~interface
enum `ScrollRestoration@I { `auto$l, `manual$l }; [Exposed=Window] interface `History@I { readonly attribute unsigned long `length$m0; 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 %unused, optional USVString? %url = null); undefined `replaceState$m(any %data, DOMString %unused, optional USVString? %url = null); };
- `history$m.`length$m0
- 現在の`辿可能な~navigable$用の総合的な`~session履歴~entry群$navの~size【!the number of】を返す。 ◎ Returns the number of overall session history entries for the current traversable navigable.
- `history$m.`scrollRestoration$m
- `作動中な~session履歴~entry$navの`~scroll復旧~mode$shEを返す。 ◎ Returns the scroll restoration mode of the active session history entry.
- `history$m.`scrollRestoration$m = %value
- `作動中な~session履歴~entry$navの`~scroll復旧~mode$shEを %value に設定する。 ◎ Set the scroll restoration mode of the active session history entry to value.
- `history$m.`state$m
- `作動中な~session履歴~entry$navの`古典~履歴~API用の状態$shEを~JS値に逆直列化した結果を返す。 ◎ Returns the classic history API state of the active session history entry, deserialized into a JavaScript value.
- `history$m.`go()$m
- 現在の~pageを読込直す。 ◎ Reloads the current page.
- `history$m.`go(delta)$m
- 現在の`辿可能な~navigable$用の総合的な`~session履歴~entry群$navが成す~listを指定された段~数だけ[ 後へ戻る/前へ進む ]。 ◎ Goes back or forward the specified number of steps in the overall session history entries list for the current traversable navigable.
- %delta ~EQ 0 の場合、 現在の~pageを読込直すことになる。 ◎ A zero delta will reload the current page.
- %delta が範囲~外を指す場合は何もしない。 ◎ If the delta is out of range, does nothing.
- `history$m.`back()$m
- 現在の`辿可能な~navigable$用の総合的な`~session履歴~entry群$navが成す~list内で 1 段だけ後へ戻る。 ◎ Goes back one step in the overall session history entries list for the current traversable navigable.
- 前~pageが無い場合、 何もしない。 ◎ If there is no previous page, does nothing.
- `history$m.`forward()$m
- 現在の`辿可能な~navigable$用の総合的な`~session履歴~entry群$navが成す~listを 1 段だけ前へ進む。 ◎ Goes forward one step in the overall session history entries list for the current traversable navigable.
- 次~pageが無い場合、 何もしない。 ◎ If there is no next page, does nothing.
- `history$m.`pushState(data, "")$m
- ~session履歴の中へ新たな~entryを追加する — その`古典~履歴~API用の状態$shEには %data の直列化 が設定される。 この~entryの~URLには、 `作動中な~session履歴~entry$navの`~URL$shEが複製された上で利用されることになる。 ◎ Adds a new entry into session history with its classic history API state set to a serialization of data. The active history entry's URL will be copied over and used for the new entry's URL.
- ( 2 個目の~parameterは、 歴史的な理由から存在し,省略できない — 空~文字列を渡しているのは、 慣習による。) ◎ (The second parameter exists for historical reasons, and cannot be omitted; passing the empty string is traditional.)
- `history$m.`pushState(data, "", url)$m
- ~session履歴の中へ新たな~entryを追加する — その[ `古典~履歴~API用の状態$shEには %data の直列化, `~URL$shEには %url ]が設定される。 ◎ Adds a new entry into session history with its classic history API state set to a serialization of data, and with its URL set to url.
- 現在の`文書$の~URLを %url で`書直せ$ない場合、 `SecurityError$E 例外が投出されることになる。 ◎ If the current Document cannot have its URL rewritten to url, a "SecurityError" DOMException will be thrown.
- ( 2 個目の~parameterは、 歴史的な理由から存在し,省略できない — 空~文字列を渡しているのは、 慣習による。) ◎ (The second parameter exists for historical reasons, and cannot be omitted; passing the empty string is traditional.)
- `history$m.`replaceState(data, "")$m
- `作動中な~session履歴~entry$navの`古典~履歴~API用の状態$shEを %data の有構造~cloneに更新する。 ◎ Updates the classic history API state of the active session history entry to a structured clone of data.
- ( 2 個目の~parameterは、 歴史的な理由から存在し,省略できない — 空~文字列を渡しているのは、 慣習による。) ◎ (The second parameter exists for historical reasons, and cannot be omitted; passing the empty string is traditional.)
- `history$m.`replaceState(data, "", url)$m
- `作動中な~session履歴~entry$navの[ `古典~履歴~API用の状態$shEを %data の有構造~clone, `~URL$shEを %url ]に更新する。 ◎ Updates the classic history API state of the active session history entry to a structured clone of data, and its URL to url.
- 現在の`文書$の~URLを %url で`書直せ$ない場合、 `SecurityError$E 例外が投出されることになる。 ◎ If the current Document cannot have its URL rewritten to url, a "SecurityError" DOMException will be thrown.
- ( 2 個目の~parameterは、 歴史的な理由から存在し,省略できない — 空~文字列を渡しているのは、 慣習による。) ◎ (The second parameter exists for historical reasons, and cannot be omitted; passing the empty string is traditional.)
各 `文書$は、 `History$I ~objを与える `履歴~obj@ を有する。 【一対一に対応する。】 ◎ A Document has a history object, a History object.
`history@m 取得子~手続きは ⇒ ~RET コレに`結付けられた文書$の`履歴~obj$ ◎ The history getter steps are to return this's associated Document's history object.
各 `History$I ~objは、 次に挙げるものを有する:
- `状態@hsT ⇒ 初期~時は ~NULL ◎ Each History object has state, initially null.
- `長さ@hsT ⇒ 負でない整数 — 初期~時は 0 ◎ Each History object has a length, a non-negative integer, initially 0.
- `~index@hsT ⇒ 負でない整数 — 初期~時は 0 ◎ Each History object has an index, a non-negative integer, initially 0.
注記: `~index$hsT は直に公開されないが、 同期的~naviの間における`長さ$hsTの変化から推定され得る。 事実、 長さは,そのために利用される。 ◎ Although the index is not directly exposed, it can be inferred from changes to the length during synchronous navigations. In fact, that is what it's used for.
`length@m0 取得子~手続きは: ◎ The length getter steps are:
- ~IF[ コレに`関連な大域~obj$に`結付けられた文書$は`全部的に作動中$でない ] ⇒ ~THROW `SecurityError$E ◎ If this's relevant global object's associated Document is not fully active, then throw a "SecurityError" DOMException.
- ~RET コレの`長さ$hsT ◎ Return this's length.
`scrollRestoration@m 用の: ◎ ↓
-
取得子~手続きは: ◎ The scrollRestoration getter steps are:
- ~IF[ コレに`関連な大域~obj$に`結付けられた文書$は`全部的に作動中$でない ] ⇒ ~THROW `SecurityError$E ◎ If this's relevant global object's associated Document is not fully active, then throw a "SecurityError" DOMException.
- ~RET コレの`~node~navigable$にて`作動中な~session履歴~entry$navの`~scroll復旧~mode$shE ◎ Return this's node navigable's active session history entry's scroll restoration mode.
-
設定子~手続きは: ◎ The scrollRestoration setter steps are:
- ~IF[ コレに`関連な大域~obj$に`結付けられた文書$は`全部的に作動中$でない ] ⇒ ~THROW `SecurityError$E ◎ If this's relevant global object's associated Document is not fully active, then throw a "SecurityError" DOMException.
- コレの`~node~navigable$にて`作動中な~session履歴~entry$navの`~scroll復旧~mode$shE ~SET 所与の値 ◎ Set this's node navigable's active session history entry's scroll restoration mode to the given value.
`state@m 取得子~手続きは: ◎ The state getter steps are:
- ~IF[ コレに`関連な大域~obj$に`結付けられた文書$は`全部的に作動中$でない ] ⇒ ~THROW `SecurityError$E ◎ If this's relevant global object's associated Document is not fully active, then throw a "SecurityError" DOMException.
- ~RET コレの`状態$hsT ◎ Return this's state.
`go(delta)@m ~method手続きは ⇒ `差分だけ辿る$( コレ, %delta ) ◎ The go(delta) method steps are to delta traverse this given delta.
`back()@m ~method手続きは ⇒ `差分だけ辿る$( コレ, −1 ) ◎ The back() method steps are to delta traverse this given −1.
`forward()@m ~method手続きは ⇒ `差分だけ辿る$( コレ, 1 ) ◎ The forward() method steps are to delta traverse this given +1.
`差分だけ辿る@ ときは、 所与の ( `History$I ~obj %履歴, 整数 %差分 ) に対し: ◎ To delta traverse a History object history given an integer delta:
- %文書 ~LET %履歴 に`関連な大域~obj$に`結付けられた文書$ ◎ Let document be history's relevant global object's associated Document.
- ~IF[ %文書 は`全部的に作動中$でない ] ⇒ ~THROW `SecurityError$E ◎ If document is not fully active, then throw a "SecurityError" DOMException.
- ~IF[ %差分 ~EQ 0 ] ⇒# `~navigableを読込直す$( %文書 の`~node~navigable$ ); ~RET ◎ If delta is 0, then reload document's node navigable, and return.
- `履歴を差分だけ辿る$( %文書 の`~node~navigable$の`辿可能な~navigable$nav, %差分, %文書 ) ◎ Traverse the history by a delta given document's node navigable's traversable navigable, delta, and with sourceDocument set to document.
`pushState(data, unused, url)@m ~method手続きは ⇒ `履歴に状態を~pushするか履歴の状態を置換する$( コレ, %data, %url, `push$hH ) ◎ The pushState(data, unused, url) method steps are to run the shared history push/replace state steps given this, data, url, and "push".
`replaceState(data, unused, url)@m ~method手続きは ⇒ `履歴に状態を~pushするか履歴の状態を置換する$( コレ, %data, %url, `replace$hH ) ◎ The replaceState(data, unused, url) method steps are to run the shared history push/replace state steps given this, data, url, and "replace".
`履歴に状態を~pushするか履歴の状態を置換する@ ときは、 所与の ⇒# `History$I ~obj %履歴, 値 %~data, `~scalar値~文字列$または ~NULL %~URL, `履歴~取扱いの挙動$ %履歴~取扱い ◎終 に対し: ◎ The shared history push/replace state steps, given a History history, a value data, a scalar value string-or-null url, and a history handling behavior historyHandling, are:
- %文書 ~LET %履歴 を有する`文書$ ◎ Let document be history's associated Document.
- ~IF[ %文書 は`全部的に作動中$でない ] ⇒ ~THROW `SecurityError$E ◎ If document is not fully active, then throw a "SecurityError" DOMException.
-
任意選択で ⇒ ~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.)
- %直列形の~data ~LET `StructuredSerializeForStorage$jA( %~data ) — 例外は投出し直す ◎ Let serializedData be StructuredSerializeForStorage(data). Rethrow any exceptions.
- %新たな~URL ~LET %文書 の`~URL$doc ◎ Let newURL be document's URL.
-
~IF[ %~URL ~NIN { ~NULL, 空~文字列 } ]: ◎ If url is not null or the empty string, then:
- %新たな~URL ~SET `~URLを符号化法の下で相対的に構文解析する$( %~URL, %履歴 に`関連な設定群~obj$ ) ◎ Set newURL to the result of encoding-parsing a URL given url, relative to the relevant settings object of history.
- ~IF[ %新たな~URL ~EQ `失敗^i ] ⇒ ~THROW `SecurityError$E ◎ If newURL is failure, then throw a "SecurityError" DOMException.
- ~IF[ `文書の~URLは書直せるか$( %文書, %新たな~URL ) ~EQ ~F ] ⇒ ~THROW `SecurityError$E ◎ If document cannot have its URL rewritten to newURL, then throw a "SecurityError" DOMException.
注記: ここで空~文字列の事例を特別に外しているのは、 歴史的な~~理由による — そのため、
location.`href$m = ""
とhistory.`pushState$m(null, "", "")
などの~codeを比較したとき,結果の~URLは相違することになる (前者は,空~文字列に対し~URL構文解析を遂行する一方で、 後者は,それを素通りするので)。 ◎ The special case for the empty string here is historical, and leads to different resulting URLs when comparing code such as location.href = "" (which performs URL parsing on the empty string) versus history.pushState(null, "", "") (which bypasses it). - %~navi ~LET %履歴 に`関連な大域~obj$の`~navi~API$ ◎ Let navigation be history's relevant global object's navigation API.
- %継続するか ~LET `~push/置換-/再読込み用の~navigate_ev~eventを発火する$( %~navi ) — 次も与える下で ⇒# `~navi種別^i ~SET %履歴~取扱い, `同じ文書か^i ~SET ~T, `行先~URL^i ~SET %新たな~URL, `古典~履歴~API用の状態^i ~SET %直列形の~data ◎ Let continue be the result of firing a push/replace/reload navigate event at navigation with navigationType set to historyHandling, isSameDocument set to true, destinationURL set to newURL, and classicHistoryAPIState set to serializedData.
- ~IF[ %継続するか ~EQ ~F ] ⇒ ~RET ◎ If continue is false, then return.
- `~URLと履歴を更新する$( %文書, %新たな~URL ) — 次も与える下で ⇒# `直列形の~data^i ~SET %直列形の~data `履歴~取扱い^i ~SET %履歴~取扱い ◎ Run the URL and history update steps given document and newURL, with serializedData set to serializedData and historyHandling set to historyHandling.
~UAは、 ~pageごとに,その~session履歴に追加される状態~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.)
`文書の~URLは書直せるか@ どうかは、 所与の ( `文書$ %文書, `~URL$ %~target~URL ) に対し,次の~algoに従う (結果が ~T ならば %~target~URL で “書直せる” ): ◎ A Document document can have its URL rewritten to a URL targetURL if the following algorithm returns true:
- %文書~URL ~LET %文書 の`~URL$doc ◎ Let documentURL be document's URL.
-
~IF[[ %~target~URL, %文書~URL ]は、 次に挙げる ある成分において相違する ]… ⇒# `~scheme$url, `~username$url, `~password$url, `~host$url, `~port$url
…ならば ⇒ ~RET ~F
◎ If targetURL and documentURL differ in their scheme, username, password, host, or port components, then return false. -
%~target~URL の`~scheme$urlに応じて: ◎ ↓
-
`~HTTP_S~scheme$ ⇒ ~RET ~T ◎ If targetURL's scheme is an HTTP(S) scheme, then return true.
注記: [ `https:@~HTTPinfra#https.uri$sc, `http:@~HTTPinfra#http.uri$sc ]~URL用には、 【!~RFCx/rfc7230#section-2.7.1/~RFCx/rfc7230#section-2.7.2】 [ `~path$url / `~query$url / `素片$url ]における相違は許容される。 ◎ Differences in path, query, and fragment are allowed for http: and https: URLs.
-
`file^l ⇒ ~RET ~IS[[ %~target~URL, %文書~URL ]は、 `~path$url 成分において相違しない ] ◎ If targetURL's scheme is "file", then: • If targetURL and documentURL differ in their path component, then return false. • Return true.
注記: `file:^sc ~URL用には、[ `~query$url / `素片$url ]における相違は許容される。 ◎ Differences in query and fragment are allowed for file: URLs.
-
その他 ⇒ ~RET ~IS[[ %~target~URL, %文書~URL ]は、[ `~path$url, `~query$url ]成分において相違しない ] ◎ If targetURL and documentURL differ in their path component or query components, then return false.
注記: `素片$urlにおける相違に限り許容される。 ◎ Only differences in fragment are allowed for other types of URLs. ◎ ↑ Return true.
-
%文書~URL | %~target~URL | `文書の~URLは書直せるか$ |
---|---|---|
`https://example.com/home^c | `https://example.com/home#about^c | ✅ |
`https://example.com/home^c | `https://example.com/home?page=shop^c | ✅ |
`https://example.com/home^c | `https://example.com/shop^c | ✅ |
`https://example.com/home^c | https://user:pass@example.com/home
| ❌ |
`https://example.com/home^c | `http://example.com/home^c | ❌ |
`file:///path/to/x^c | `file:///path/to/x#hash^c | ✅ |
`file:///path/to/x^c | `file:///path/to/x?search^c | ✅ |
`file:///path/to/x^c | `file:///path/to/y^c | ❌ |
`about:blank^c | `about:blank#hash^c | ✅ |
`about:blank^c | `about:blank?search^c | ❌ |
`about:blank^c | `about:srcdoc^c | ❌ |
`data:text/html,foo^c | `data:text/html,foo#hash^c | ✅ |
`data:text/html,foo^c | `data:text/html,foo?search^c | ❌ |
`data:text/html,foo^c | `data:text/html,bar^c | ❌ |
`data:text/html,foo^c | `data:bar^c | ❌ |
`blob:https://example.com/77becafe-657b-4fdc-8bd3-e83aaa5e8f43^c | `blob:https://example.com/77becafe-657b-4fdc-8bd3-e83aaa5e8f43#hash^c | ✅ |
`blob:https://example.com/77becafe-657b-4fdc-8bd3-e83aaa5e8f43^c | `blob:https://example.com/77becafe-657b-4fdc-8bd3-e83aaa5e8f43?search^c | ❌ |
`blob:https://example.com/77becafe-657b-4fdc-8bd3-e83aaa5e8f43^c | `blob:https://example.com/anything^c | ❌ |
`blob:https://example.com/77becafe-657b-4fdc-8bd3-e83aaa5e8f43^c | `blob:path^c | ❌ |
ここでは、 `文書$の`生成元$docは問われないことに注意。 それは、 次に挙げる様な事例では,文書の`~URL$docの`生成元$urlと合致しないこともある ⇒# 生成元を他から継承した初期 `~about_blank$sc 文書/ ~sandbox化された `iframe$e / `document.domain@~ORIGIN#dom-document-domain$c 設定子が利用されたとき ◎ Note how only the URL of the Document matters, and not its origin. They can mismatch in cases like about:blank Documents with inherited origins, in sandboxed iframes, or when the document.domain setter has been used.
~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, '', '?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においても,依然として先掲の例の様に働くが、 `切っていない^em利用者は,ずっと高速に~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は、 自身の履歴~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.2.6. ~navi~API
【 この節を成す内容は、 `別~page@~HTMLnavAPI$にて。 】
7.2.7. ~event~interface
`NavigateEvent$I ~interfaceは、 その複階性に因り, `自前の専用な節@~HTMLnavAPI#the-navigate-event$にて与えられる。 ◎ The NavigateEvent interface has its own dedicated section, due to its complexity.
7.2.7.1. `NavigationCurrentEntryChangeEvent^I ~interface
【 この節を成す内容は、 `別~page@~HTMLnavAPI#the-navigationcurrententrychangeevent-interface$にて。 】
7.2.7.2. `PopStateEvent^I ~interface
[Exposed=Window] interface `PopStateEvent@I : `Event$I { constructor(DOMString %type, optional `PopStateEventInit$I %eventInitDict = {}); readonly attribute any `state$m0; readonly attribute boolean `hasUAVisualTransition$m; }; dictionary `PopStateEventInit@I : `EventInit$I { any `state@mb = null; boolean `hasUAVisualTransition@mb = false; };
- %event.`state$m0
- `pushState()$m / `replaceState()$m に供された情報の複製を返す。 ◎ Returns a copy of the information that was provided to pushState() or replaceState().
- %event.`hasUAVisualTransition$m
- ~UAが[ この~eventを配送する前に,この~navi用に視覚的な遷移を遂行した 【おそらく, `CSSVIEWTRANSITIONS$r を指す】 ]ならば ~T を返す。 ~T の場合、 作者は,[ ~navi後の状態と同期的に~DOMを更新する ]ならば最良な利用者~体験を与えることになる。 ◎ Returns true if the user agent performed a visual transition for this navigation before dispatching this event. If true, the best user experience will be given if the author synchronously updates the DOM to the post-navigation state.
- `state@m0 ◎ The state attribute\
- 取得子は、 初期化-時の値を返すモノトスル。 ◎ must return the value it was initialized to.\
- この~event用の文脈~情報を表現する。 表現される状態が`文書$の初期~状態の場合は ~NULL になる。 ◎ It represents the context information for the event, or null, if the state represented is the initial state of the Document.
- `hasUAVisualTransition@m ◎ The hasUAVisualTransition attribute\
- 取得子は、 初期化-時の値を返すモノトスル。 ◎ must return the value it was initialized to.
7.2.7.3. `HashChangeEvent^I ~interface
[Exposed=Window] interface `HashChangeEvent@I : `Event$I { constructor(DOMString %type, optional `HashChangeEventInit$I %eventInitDict = {}); readonly attribute USVString `oldURL$m; readonly attribute USVString `newURL$m; }; dictionary `HashChangeEventInit@I : `EventInit$I { USVString oldURL = ""; USVString newURL = ""; };
- %event.`oldURL$m
- 履歴を辿る直前の`~session履歴~entry$の`~URL$を返す。 ◎ Returns the URL of the session history entry that was previously current.
- %event.`newURL$m
- 履歴を辿った直後の`~session履歴~entry$の`~URL$を返す。 ◎ Returns the URL of the session history entry that is now current.
- `oldURL@m ◎ The oldURL attribute\
- 取得子は、 初期化-時の値を返すモノトスル。 ◎ must return the value it was initialized to.\
- これは、 この~event用の文脈~情報 — 特定的には、 履歴を辿る直前の`~session履歴~entry$の~URL — を表現する。 ◎ It represents context information for the event, specifically the URL of the session history entry that was traversed from.
- `newURL@m ◎ The newURL attribute\
- 取得子は、 初期化-時の値を返すモノトスル。 ◎ must return the value it was initialized to.\
- これは、 この~event用の文脈~情報 — 特定的には、 履歴を辿った直後の`~session履歴~entry$の~URL — を表現する。 ◎ It represents context information for the event, specifically the URL of the session history entry that was traversed to.
7.2.7.4. `PageSwapEvent^I ~interface
【 この節を成す内容は、 `別~page@~HTMLnavAPI#the-pageswapevent-interface$にて。 】
7.2.7.5. `PageRevealEvent^I ~interface
【 この節を成す内容は、 `別~page@~HTMLnavAPI#the-pagerevealevent-interface$にて。 】
7.2.7.6. `PageTransitionEvent^I ~interface
【 この節を成す内容は、 `別~page@~HTMLnavAPI#the-pagetransitionevent-interface$にて。 】
7.2.7.7. `BeforeUnloadEvent^I ~interface
[Exposed=Window] interface `BeforeUnloadEvent@I : `Event$I { attribute DOMString `returnValue$m; };
注記: `BeforeUnloadEvent$I に特有な初期化~methodはない。 ◎ There are no BeforeUnloadEvent-specific initialization methods.
`BeforeUnloadEvent$I ~interfaceは、 旧来の~interfaceである — それは、[ ~eventを取消すのみならず, `returnValue$m 属性を空~文字列でない値に設定する ]ことにより, `~unloadは取消されたか否か検査する$ことを許容する。 作者は `returnValue$m を利用する代わりに `preventDefault()$m ~method, または~eventを取消す他の手段を利用するベキである。 ◎ The BeforeUnloadEvent interface is a legacy interface which allows checking if unloading is canceled to be controlled not only by canceling the event, but by setting the returnValue attribute to a value besides the empty string. Authors should use the preventDefault() method, or other means of canceling events, instead of using returnValue.
- `returnValue@m ◎ The returnValue attribute\
- この属性は、 `~unloadは取消されたか否か検査する$処理nを制御する。 ◎ controls the process of checking if unloading is canceled.\
- ~eventの作成-時には、 この属性は空~文字列に設定するモノトスル。 ◎ When the event is created, the attribute must be set to the empty string.\
- 取得子は、 この属性に最後に設定された値を返すモノトスル。 ◎ On getting, it must return the last value it was set to.\
- 設定子は、 この属性を所与の値に設定するモノトスル。 ◎ On setting, the attribute must be set to the new value.
- 注記: この属性が `DOMString^I にされているのは、 もっぱら歴史的な理由による。 空~文字列~以外のどの値も,利用者に確認をとるよう要請するものと扱われる。 ◎ This attribute is a DOMString only for historical reasons. Any value besides the empty string will be treated as a request to ask the user for confirmation.
7.2.8. `NotRestoredReasons^I ~interface
[Exposed=Window] interface `NotRestoredReasonDetails@I { readonly attribute DOMString `reason$m; [Default] object toJSON(); }; [Exposed=Window] interface `NotRestoredReasons@I { readonly attribute DOMString? `src$m; readonly attribute DOMString? `id$m; readonly attribute DOMString? `name$m0; readonly attribute DOMString? `url$m; readonly attribute FrozenArray<`NotRestoredReasonDetails$I>? `reasons$m; readonly attribute FrozenArray<`NotRestoredReasons$I>? `children$m; [Default] object toJSON(); };
【 以下に現れる “当の文書” は、 これらの~interfaceを実装している~objに`関連な~realm$の`大域~obj$rMに`結付けられた文書$を指す。 】
- %notRestoredReasonDetails.`reason$m
- [ 当の文書が`~BF~cache$から~serveされるのを防止した事由 ]を説明する文字列を返す。 アリな値は、 `事由~文字列$nrrd【!`~BF~cacheを阻んでいる詳細$docの定義】を見よ。 ◎ Returns a string that explains the reason that prevented the document from being served from back/forward cache. See the definition of bfcache blocking details for the possible string values.
- %notRestoredReasons.`src$m
- 当の文書の`~node~navigable$の`容器$navは[ `iframe$e 要素であって, `src$aF 属性を有する ]ならば,その値を返す。 他の場合は ~NULL を返す。 ◎ Returns the src attribute of the document's node navigable's container if it is an iframe element. This can be null if not set or if it is not an iframe element.
- %notRestoredReasons.`id$m
- 当の文書の`~node~navigable$の`容器$navは[ `iframe$e 要素であって, `id$a 属性を有する ]ならば、 その値を返す。 他の場合は ~NULL を返す。 ◎ Returns the id attribute of the document's node navigable's container if it is an iframe element. This can be null if not set or if it is not an iframe element.
- %notRestoredReasons.`name$m0
- 当の文書の`~node~navigable$の`容器$navは[ `iframe$e 要素であって, `name$aF 属性を有する ]ならば、 その値を返す。 他の場合は ~NULL を返す。 ◎ Returns the name attribute of the document's node navigable's container if it is an iframe element. This can be null if not set or if it is not an iframe element.
- %notRestoredReasons.`url$m
- 当の文書の`~URL$docを返す。 ただし、 当の文書は非同一-生成元な `iframe$e 内にある場合は ~NULL を返す。 これは、 `src$m に加えて報告される — `iframe$e は元の `src$aF が設定された後に~navigateされることもアリなので。 ◎ Returns the document's URL, or null if the document is in a cross-origin iframe. This is reported in addition to src because it is possible iframe navigated since the original src was set.
- %notRestoredReasons.`reasons$m
- 当の文書~用の `NotRestoredReasonDetails$I たちが成す配列を返す。 ただし、 当の文書は非同一-生成元な `iframe$e 内にある場合は ~NULL を返す。 ◎ Returns an array of NotRestoredReasonDetails for the document. This is null if the document is in a cross-origin iframe.
- %notRestoredReasons.`children$m
- 当の文書の子~群~用の `NotRestoredReasons$I たちが成す配列を返す。 ただし、 当の文書は非同一-生成元な `iframe$e 内にある場合は ~NULL を返す。 ◎ Returns an array of NotRestoredReasons that are for the document’s children. This is null if the document is in a cross-origin iframe.
各 `NotRestoredReasonDetails$I ~objは、 それを `~backしている構造体@NRRD を有する — それは、[ ~NULL /`復旧されない事由の詳細$ ]であり,初期~時は~NULLとする。 ◎ A NotRestoredReasonDetails object has a backing struct, a not restored reason details or null, initially null.
`NotRestoredReasonDetails$I ~objを `作成する@NRRD ときは、 所与の ( `復旧されない事由の詳細$ %~backしている構造体, `~realm$ %~realm ) に対し: ◎ To create a NotRestoredReasonDetails object given a not restored reason details backingStruct and a realm realm:
- %O ~LET `新たな~obj$( `NotRestoredReasonDetails$I, %~realm ) ◎ Let notRestoredReasonDetails be a new NotRestoredReasonDetails object created in realm.
- %O を`~backしている構造体$NRRD ~SET %~backしている構造体 ◎ Set notRestoredReasonDetails's backing struct to backingStruct.
- ~RET %O ◎ Return notRestoredReasonDetails.
`復旧されない事由の詳細@ は、 次に挙げる`~item$sctを伴う`構造体$である: ◎ A not restored reason details is a struct with the following items:
- `事由~文字列@nrrd ⇒ ある文字列 — 初期~時は空~文字列とする。 ◎ reason, a string, initially empty.
`事由~文字列$nrrdは、[ 当の~pageを`~BF~cache$から復旧することを防止した事由 ]を表現する。 この文字列は、 次に挙げるいずれかになる: ◎ The reason is a string that represents the reason that prevented the page from being restored from back/forward cache. The string is one of the following:
- `fetch@bK
- `~unloadして$いる間に[ 当の`文書$により起動された~fetchは、 依然として進行中であったが,取消された ]ので、 当の~pageは[ `~BF~cache$内に格納することもできた状態 ]にはなかった。 ◎ While unloading, a fetch initiated by this Document was still ongoing and was canceled, so the page was not in a state that could be stored in the back/forward cache.
- `navigation-failure@bK
- [ 当の`文書$を作成した元の~naviは,~errorした ]ので、[ 結果の~error文書を`~BF~cache$内に格納する ]ことは防止された。 ◎ The original navigation that created this Document errored, so storing the resulting error document in the back/forward cache was prevented.
- `parser-aborted@bK
- [ 当の`文書$は,その初期~HTML構文解析を完遂し得なくなった ]ので、[ 完遂しなかった文書を`~BF~cache$内に格納する ]ことは防止された。 ◎ The Document never finished its initial HTML parsing, so storing the unfinished document in the back/forward cache was prevented.
- `websocket@bK
- `~unloadして$いる間に[ ある~openな `WebSocket$I 接続が~shut-downされた ]ので、 当の~pageは[ `~BF~cache$内に格納することもできた状態 ]にはなかった。 `WEBSOCKETS$r ◎ While unloading, an open WebSocket connection was shut down, so the page was not in a state that could be stored in the back/forward cache. [WEBSOCKETS]
- `lock@bK
- `~unloadして$いる間に[ 保持された`~lock$と`~lock要請$が終了された ]ので、 当の~pageは[ `~BF~cache$内に格納することもできた状態 ]にはなかった。 `WEBLOCKS$r ◎ While unloading, held locks and lock requests were terminated, so the page was not in a state that could be stored in the back/forward cache. [WEBLOCKS]
- `masked@bK
-
次のいずれかにより,当の`文書$を`~BF~cache$内に格納できなかった:
- 当の`文書$内の非同一-生成元な子 `iframe$e により防止された。
- ~UAに特有な事由 — ただし、 ~UAが[ いずれかの`~UAに特有な阻んでいる事由$を利用する ]ことを選ばなかった場合に限る。
上に挙げたものに加えて、 ~UAは, `~UAに特有な阻んでいる事由@ により[ 当の~pageが`~BF~cache$から復旧されることを防止した事由 ]を 【`事由~文字列$nrrdにて】 — 以下に挙げるいずれかの文字列として — 公開することを選ぶかもしれない: ◎ In addition to the list above, a user agent might choose to expose a reason that prevented the page from being restored from back/forward cache for user-agent specific blocking reasons. These are one of the following strings:
- `audio-capture@bK
- 当の`文書$は、 `MEDIASTREAM$r の `getUserMedia()@~MEDIACAPTURE/getusermedia.html#dom-mediadevices-getusermedia$m を音声と伴に利用して, 音声を捕捉する許可を要請した。 ◎ The Document requested audio capture permission by using Media Capture and Streams's getUserMedia() with audio. [MEDIASTREAM]
- `background-work@bK
- 当の`文書$は、 次に挙げるいずれかの~methodを~callすることにより,背景~作業を要請した ⇒# `SyncManager@https://wicg.github.io/background-sync/spec/#syncmanager$I の `register()@https://wicg.github.io/background-sync/spec/#dom-syncmanager-register$m, `PeriodicSyncManager@https://wicg.github.io/periodic-background-sync/#periodicsyncmanager$I の `register()@https://wicg.github.io/periodic-background-sync/#dom-periodicsyncmanager-register$m, `BackgroundFetchManager@https://wicg.github.io/background-fetch/#backgroundfetchmanager$I の `fetch()@https://wicg.github.io/background-fetch/#dom-backgroundfetchmanager-fetch$m ◎ The Document requested background work by calling SyncManager's register() method, PeriodicSyncManager's register() method, or BackgroundFetchManager's fetch() method.
- `broadcastchannel-message@bK
- 当の~pageが`~BF~cache$内に格納されている間に, 当の~page上の `BroadcastChannel$I 接続が~messageを受信したことにより `message$et ~eventが発火された。 ◎ While the page was stored in back/forward cache, a BroadcastChannel connection on the page received a message and message event was fired.
- `idb-event@bK
- `~unloadして$いる間に,当の`文書$は処理待ちな `IDBVersionChangeEvent@~INDEXEDDB#idbversionchangeevent$I を有していた。 `INDEXEDDB$r ◎ The Document had a pending IDBVersionChangeEvent while unloading. [INDEXEDDB]
- `idledetector@bK
- `~unloadして$いる間に, 当の`文書$は作動中な `IdleDetector@https://wicg.github.io/idle-detection/#idledetector$I を有していた。 ◎ The Document had an active IdleDetector while unloading.
- `keyboard-lock@bK
- `Keyboard@https://wicg.github.io/keyboard-lock/#keyboard$I の `lock()@https://wicg.github.io/keyboard-lock/#dom-keyboard-lock$m ~methodが~callされたため、 `~unloadして$いる間も~keyboard~lockは依然として作動中であった。 ◎ While unloading, keyboard lock was still active because Keyboard's lock() method was called.
- `mediastream@bK
- 当の`文書を~unloadする@~HTMLlifecycle#unload-a-document$際に, `MediaStreamTrack@~MEDIACAPTURE/getusermedia.html#mediastreamtrack$I は`~live状態@~MEDIACAPTURE/getusermedia.html#idl-def-MediaStreamTrackState.live$にあった。 `MEDIASTREAM$r ◎ A MediaStreamTrack was in the live state upon unloading. [MEDIASTREAM]
- `midi@bK
- 当の`文書$は、 `navigator.requestMIDIAccess()@https://webaudio.github.io/web-midi-api/#dom-navigator-requestmidiaccess$c を~callすることにより, ~MIDI許可を要請した。 ◎ The Document requested a MIDI permission by calling navigator.requestMIDIAccess().
- `modals@bK
- `~unloadして$いる間に,`利用者~向けの~prompt@~HTMLGAPI#user-prompts$が示された。 ◎ User prompts were shown while unloading.
- `navigating@bK
- `~unloadして$いる間も読込ngは依然として進行中にあったので、 当の`文書$は[ `~BF~cache$内に格納することもできた状態 ]にはなかった。 ◎ While unloading, loading was still ongoing, and so the Document was not in a state that could be stored in back/forward cache.
- `navigation-canceled@bK
- 当の~navi要請は `stop()$m を~callすることにより取消されたため、 当の~pageは[ `~BF~cache$内に格納できる状態 ]にはなかった。 ◎ The navigation request was canceled by calling window.stop() and the page was not in a state to be stored in back/forward cache.
- `non-trivial-bcg@bK
- 当の`文書$が属する`閲覧~文脈~group$は、 複数個の`~top-level閲覧~文脈$を有していた。 ◎ The browsing context group of this Document had more than one top-level browsing context.
- `blocking-otp@bK
- 当の`文書$は、 `OTPCredential@https://wicg.github.io/web-otp/#otpcredential$I を作成した。 ◎ The Document created an OTPCredential.
- `outstanding-network-request@bK
- `~unloadして$いる間に, 当の`文書$は応答待ちな~network要請を有していたため、[ `~BF~cache$内に格納することもできた状態 ]にはなかった。 ◎ While unloading, the Document had outstanding network requests and was not in a state that could be stored in back/forward cache.
- `payment@bK
- `~unloadして$いる間に, 当の`文書$は作動中な `PaymentRequest@https://w3c.github.io/payment-request/#dom-paymentrequest$I を有していた。 `PAYMENTREQUEST$r ◎ The Document had an active PaymentRequest while unloading. [PAYMENTREQUEST]
- `picture-in-picture@bK
- `~unloadして$いる間に,当の`文書$は作動中な `PictureInPictureWindow@https://w3c.github.io/picture-in-picture/#pictureinpicturewindow$I を有していた。 `PICTUREINPICTURE$r ◎ The Document had an active PictureInPictureWindow while unloading. [PICTUREINPICTURE]
- `plugins@bK
- 当の`文書$は、 ある`~plugin$を包含していた。 ◎ The Document contained plugins.
- `method-not-get@bK
- 当の`文書$は、 次を満たす~HTTP要請から作成された ⇒ その`~method$rq ~NEQ `GET^M `FETCH$r ◎ The Document was created from an HTTP request whose method was not `GET`. [FETCH]
- `auth-required@bK
- 当の`文書$は、 ~HTTP認証を要求する~HTTP応答から作成された。 ◎ The Document was created from an HTTP response that required HTTP authentication.
- `ccns@bK
- 当の`文書$は、 次を満たす~HTTP応答から作成された `HTTP$r ⇒ `Cache-Control$h ~headerを包含していて, その値は `no-store^v ~tokenを内包している ◎ The Document was created from an HTTP response whose `Cache-Control` header included the "no-store" token. [HTTP]
- `ccnc@bK
- 当の`文書$は、 次を満たす~HTTP応答から作成された ⇒ `Cache-Control$h ~headerを包含していて, その値は `no-cache^v ~tokenを内包している `HTTP$r ◎ The Document was created from an HTTP response whose `Cache-Control` header included the "no-cache" token. [HTTP]
- `keepalive@bK
- 当の`文書$は、 次を満たす~HTTP応答から作成された ⇒ `Keep-Alive$h ~headerを包含している ◎ The Document was created from an HTTP response that contained a `Keep-Alive` header.
- `not-http-https@bK
- 当の`文書$は、 次を満たす応答から作成された `FETCH$r ⇒ その`~URL$rsの`~scheme$urlは`~HTTP_S~scheme$でない ◎ The Document was created from a response whose URL's scheme was not an HTTP(S) scheme. [FETCH]
- `response-not-ok@bK
- 当の`文書$は、 次を満たす~HTTP応答から作成された `FETCH$r ⇒ その`状態s$rsは`~ok状態s$でない ◎ The Document was created from an HTTP response whose status was not an ok status. [FETCH]
- `rtc@bK
- `~unloadして$いる間に[ `RTCPeerConnection@https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnection$I / `RTCDataChannel@https://w3c.github.io/webrtc-pc/#dom-rtcdatachannel$I ]が~shut-downされたので、 当の~pageは[ `~BF~cache$内に格納することもできた状態 ]にはなかった。 `WEBRTC$r ◎ While unloading, a RTCPeerConnection or RTCDataChannel was shut down, so the page was not in a state that could be stored in the back/forward cache. [WEBRTC]
- `sensors@bK
- 当の`文書$は、 `~sensor~accessを要請した@~SENSORS#request-sensor-access$。 ◎ The Document requested sensor access.
- `serviceworker-added@bK
- 当の~pageが`~BF~cache$内にある間に, 当の`文書$の`~sw~client$は,ある `ServiceWorker$I により`制御され@~SW1#dfn-control$るように開始された。 `SW$r ◎ The Document's service worker client started to be controlled by a ServiceWorker while the page was in back/forward cache. [SW]
- `serviceworker-claimed@bK
- 当の~pageが`~BF~cache$内にある間に, 当の`文書$の`~sw~client$にて`作動中な~sw$enVが `claim^en された【 `claim()@~SW1#dom-clients-claim$m が~callされた?】。 `SW$r ◎ The Document's service worker client's active service worker was claimed while the page was in back/forward cache. [SW]
- `sw-message@bK
- 当の~pageが`~BF~cache$内にある間に, 当の`文書$の`~sw~client$にて`作動中な~sw$enVが~messageを受信した。 `SW$r ◎ The Document's service worker client's active service worker received a message while the page was in back/forward cache. [SW]
- `sw-activation@bK
- 当の~pageが`~BF~cache$内にある間に, 当の`文書$の`~sw~client$にて`作動中な~sw$enVの~version【?】が作動化された。 `SW$r ◎ The Document's service worker client's active service worker's version was activated while the page was in back/forward cache. [SW]
- `sw-unregistered@bK
- 当の~pageが`~BF~cache$内にある間に, 当の`文書$の`~sw~client$にて`作動中な~sw$enVの`~sw登録$が`未登録にされた@~SW1#navigator-service-worker-unregister$。 `SW$r ◎ The Document's service worker client's active service worker's service worker registration was unregistered while the page was in back/forward cache. [SW]
- `sharedworker@bK
- 当の`文書$は、 ある `SharedWorkerGlobalScope$I の`所有者~集合$wG内に在った。 ◎ This Document was in the owner set of a SharedWorkerGlobalScope.
- `smartcard@bK
- `~unloadして$いる間に, 当の`文書$は作動中な `SmartCardConnection@https://wicg.github.io/web-smart-card/#dom-smartcardconnection$I を有していた。 ◎ The Document had an active SmartCardConnection while unloading.
- `speech-reco@bK
- `~unloadして$いる間に, 当の`文書$は作動中な `SpeechRecognition@https://wicg.github.io/speech-api/#speechrecognition$I を有していた。 ◎ The Document had an active SpeechRecognition while unloading.
- `storage@bK
- 当の`文書$は、 `Storage Access API^cite を利用して~storage~access許可を要請した。 ◎ The Document requested storage access permission by using the Storage Access API.
- `unload@bK
- 当の`文書$は、 `unload$et ~event用の`~event~listener$を登録した。 ◎ The Document registered an event listener for the unload event.
- `video-capture@bK
- 当の`文書$は、 `MEDIASTREAM$r の `getUserMedia()@~MEDIACAPTURE/getusermedia.html#dom-mediadevices-getusermedia$m を動画と伴に利用して, 動画を捕捉する許可を要請した。 ◎ The Document requested video capture permission by using Media Capture and Streams's getUserMedia() with video. [MEDIASTREAM]
- `webhid@bK
- 当の`文書$は、 `WebHID API^cite の `requestDevice()@https://wicg.github.io/webhid/#requestdevice-method$m ~methodを~callした。 ◎ The Document called the WebHID API's requestDevice() method.
- `webshare@bK
- 当の`文書$は、 `Web Share API^cite の `navigator.share()@~WEBSHARE#share-method$m ~methodを利用した。 ◎ The Document used the Web Share API's navigator.share() method.
- `webtransport@bK
- `~unloadして$いる間に,~openな `WebTransport$I 接続が~shut-downされたので、 当の~pageは[ `~BF~cache$内に格納することもできた状態 ]にはなかった。 `WEBTRANSPORT$r ◎ While unloading, an open WebTransport connection was shut down, so the page was not in a state that could be stored in the back/forward cache. [WEBTRANSPORT]
- `webxr@bK
- 当の`文書$は、 `XRSystem@https://immersive-web.github.io/webxr/#xrsystem$I を作成した。 ◎ The Document created a XRSystem.
各 `NotRestoredReasons$I ~objは、 次に挙げるものを有する: ◎ ↓
- `~backしている構造体@NRR ⇒ `復旧されない事由~群$/ ~NULL — 初期~時は ~NULL とする。 ◎ A NotRestoredReasons object has a backing struct, a not restored reasons or null, initially null.
- `事由~群~配列@NRR ⇒ `NotRestoredReasonDetails$I ~objたちが成す`凍結d配列$/ ~NULL — 初期~時は ~NULL とする。 ◎ A NotRestoredReasons object has a reasons array, a FrozenArray<NotRestoredReasonDetails> or null, initially null.
- `子~事由~群~配列@NRR ⇒ `NotRestoredReasons$I ~objたちが成す`凍結d配列$/ ~NULL — 初期~時は ~NULL とする。 ◎ A NotRestoredReasons object has a children array, a FrozenArray<NotRestoredReasons> or null, initially null.
`url@m 取得子~手続きは: ◎ The url getter steps are:
- %~URL ~LET コレを`~backしている構造体$NRRの`~URL$nrr ◎ ↓
- ~IF[ %~URL ~EQ ~NULL ] ⇒ ~RET ~NULL ◎ If this's backing struct's URL is null, then return null.
- ~RET `~URLを直列化する$( %~URL ) ◎ Return this's backing struct's URL, serialized.
`NotRestoredReasons$I ~objを `作成する@NRR ときは、 所与の ( `復旧されない事由~群$ %~backしている構造体, `~realm$ %~realm ) に対し: ◎ To create a NotRestoredReasons object given a not restored reasons backingStruct and a realm realm:
- %復旧されない事由~群 ~LET `新たな~obj$( `NotRestoredReasons$I, %~realm ) ◎ Let notRestoredReasons be a new NotRestoredReasons object created in realm.
- %復旧されない事由~群 を`~backしている構造体$NRR ~SET %~backしている構造体 ◎ Set notRestoredReasons's backing struct to backingStruct.
- ~IF[ %~backしている構造体 の`事由~群$nrr ~EQ ~NULL ] ⇒ %復旧されない事由~群 の`事由~群~配列$NRR ~SET ~NULL ◎ If backingStruct's reasons is null, set notRestoredReasons's reasons array to null.
-
~ELSE: ◎ Otherwise:
- %事由~群~配列 ~LET 新たな`~list$ ◎ Let reasonsArray be an empty list.
-
%~backしている構造体 の`事由~群$nrrを成す ~EACH( %事由 ) に対し: ◎ For each reason of backingStruct's reasons:
- %O ~LET `NotRestoredReasonDetails^I ~objを`作成する$NRRD( %事由, %~realm ) ◎ Create a NotRestoredReasonDetails object given reason and realm,\
- %事由~群~配列 に %O を`付加する$ ◎ and append it to reasonsArray.
- %復旧されない事由~群 の`事由~群~配列$NRR ~SET `凍結d配列を作成する$( %事由~群~配列 ) ◎ Set notRestoredReasons's reasons array to the result of creating a frozen array given reasonsArray.
- ~IF[ %~backしている構造体 の`子~事由~群$nrr ~EQ ~NULL ] ⇒ %復旧されない事由~群 の`子~事由~群~配列$NRR ~SET ~NULL ◎ If backingStruct's children is null, set notRestoredReasons's children array to null.
-
~ELSE: ◎ Otherwise:
- %子~事由~群~配列 ~LET 新たな`~list$ ◎ Let childrenArray be an empty list.
-
%~backしている構造体 の`子~事由~群$nrrを成す ~EACH( %子 ) に対し: ◎ For each child of backingStruct's children:
- %O ~LET `NotRestoredReasons^I ~objを`作成する$NRR( %子, %~realm ) ◎ Create a NotRestoredReasons object given child\
- %子~事由~群~配列 に %O を`付加する$ ◎ and realm and append it to childrenArray.
- %復旧されない事由~群 の`子~事由~群~配列$NRR ~SET `凍結d配列を作成する$( %子~事由~群~配列 ) ◎ Set notRestoredReasons's children array to the result of creating a frozen array given childrenArray.
- ~RET %復旧されない事由~群 ◎ Return notRestoredReasons.
`復旧されない事由~群@ は、 次に挙げる`~item$sctを伴う`構造体$である: ◎ A not restored reasons is a struct with the following items:
- `~source@nrr ⇒ ある文字列/ ~NULL — 初期~時は ~NULL とする。 ◎ src, a string or null, initially null.
- `~ID@nrr ⇒ ある文字列/ ~NULL — 初期~時は ~NULL とする。 ◎ id, a string or null, initially null.
- `名前@nrr ⇒ ある文字列/ ~NULL — 初期~時は ~NULL とする。 ◎ name, a string or null, initially null.
- `~URL@nrr ⇒ ある`~URL~record$/ ~NULL — 初期~時は ~NULL とする。 ◎ url, a URL or null, initially null.
- `事由~群@nrr ⇒ `復旧されない事由の詳細$たちが成す`~list$/ ~NULL — 初期~時は ~NULL とする。 ◎ reasons, null or a list of not restored reason details, initially null.
- `子~事由~群@nrr ⇒ `復旧されない事由~群$たちが成す`~list$/ ~NULL — 初期~時は ~NULL とする。 ◎ children, null or a list of not restored reasons, initially null.
`文書の復旧されない事由~群@ は、 所与の ( `文書$ %文書 ) に対し: ◎ A Document's not restored reasons is\
- %~navigable ~LET %文書 の`~node~navigable$ ◎ ↓
- ~IF[ %~navigable は`~top-level辿可能$である ] ⇒ ~RET %~navigable にて`作動中な~entry$navの`文書~状態$shEの`復旧されない事由~群$dS ◎ its node navigable's active session history entry's document state's not restored reasons, if Document's node navigable is a top-level traversable;\
- ~RET ~NULL ◎ otherwise null.