1. 序論
◎非規範的~web~appの処理能~特性の測定-法は、 ~web~appをより高速にするために重要な側面になる。 `JSMEASURE$r などの~JSに基づく仕組みは、 ~appにおける利用者の待時間( `latency^en )測定~用の包括的な~~手段を供せる一方で、 多くの事例で,それらは端点間における待時間の完全なあるいは詳細な様相を供せない。 例えば,次の~JSは、 ~pageが全部的に~loadされるまでの時間を,ごく素朴に測定しようと試みる: ◎ Accurately measuring performance characteristics of web applications is an important aspect of making web applications faster. While JavaScript-based mechanisms, such as the one described in [JSMEASURE], can provide comprehensive instrumentation for user latency measurements within an application, in many cases, they are unable to provide a complete or detailed end-to-end latency picture. For example, the following JavaScript shows a naive attempt to measure the time it takes to fully load a page:
<html>
<head>
<script type="text/javascript">
var start = new Date().getTime();
function onLoad() {
var now = new Date().getTime();
var latency = now - start;
alert("page loading time: " + latency);
}
</script>
</head>
<body onload="onLoad()">
<!--
~page本体の内容…
◎
Main page body goes from here.
-->
</body>
</html>
上の~scriptは `head^e ~tag内の最初の~JS~codeが実行されて以降から,~pageが~loadされるまでの時間は計算するが、 ~serverから~pageを得るために要した時間や, ~pageの初期~化 lifecycle 【! * 】についての情報は与えない。 ◎ The above script calculates the time it takes to load the page after the first bit of JavaScript in the head is executed, but it does not give any information about the time it takes to get the page from the server, or the initialization lifecycle of the page.
この仕様は、 文書の~naviに関係する高分解能な処理能~計量~dataを格納する/検索取得するための, `PERFORMANCE-TIMELINE-2$r に関与する `PerformanceNavigationTiming$I ~interfaceを定義する。 `PerformanceNavigationTiming$I ~interfaceは `HR-TIME$r を利用するので、 すべての時刻~値は, 当の~entryに`関連な設定群~obj$の`時刻起点$enVを~~基準に測定される。 【したがって、 `PerformanceNavigationTiming^I ~interfaceが返す時刻~値 0 は,`時刻起点$enVを表すことになる。】 ◎ This specification defines the PerformanceNavigationTiming interface which participates in the [PERFORMANCE-TIMELINE-2] to store and retrieve high resolution performance metric data related to the navigation of a document. As the PerformanceNavigationTiming interface uses [HR-TIME], all time values are measured with respect to the time origin of the entry’s relevant settings object.
例えば,~HTTP応答の終了が~naviの開始から 100ms 後であったとするなら、 `PerformanceNavigationTiming$I の~dataは次の様になるであろう: ◎ For example, if we know that the response end occurs 100ms after the start of navigation, the PerformanceNavigationTiming data could look like so:
startTime: 0.000 /* ~navi要請の開始~時刻 ◎ start time of the navigation request */ responseEnd: 100.000 /* 最後の~byteが受信された高分解能な時刻 ◎ high resolution time of last received byte */
文書の~naviに関係する正確aな計時~dataを得するために, `PerformanceNavigationTiming$I ~interfaceを利用する例を次の~scriptに示す: ◎ The following script shows how a developer can use the PerformanceNavigationTiming interface to obtain accurate timing data related to the navigation of the document:
<script>
function showNavigationDetails() {
/*
最初の~entryを取得する
◎
Get the first entry
*/
const [%entry] = performance.getEntriesByType("navigation");
/*
結果を開発者~console内に表tの~~形で示す
◎
Show it in a nice table in the developer console
*/
console.table(%entry.toJSON());
}
</script>
<body onload="showNavigationDetails()">
(結果は~consoleではなく,ここに示される)【 他~pageでも利用できる`ブックマークレット@~bookmarklet2$(結果は~consoleに示される) 】【 `~level 1 実装~用のもの@#_test_level1$もある 】
2. 各種用語
【 この節の内容うち一部は省略する。 】 ◎ The construction "a Foo object", where Foo is actually an interface, is sometimes used instead of the more accurate "an object implementing the interface Foo.
【この仕様の~APIの記述に現れる】 `現在の文書@ ( `current document^en )は、 【コレに`関連な大域~obj$である】`~window$に`結付けられた文書$を指す。 ◎ The term current document refers to the document associated with the Window object’s newest Document object.
【 加えて, “前-文書” ( `previous document^en )は、 `現在の文書$へ~navigateされる前の時点で,同じ`~navigable$にて`作動中な文書$navであったものを指す(もしあれば)。 】
この仕様を通して、 時刻は,文書の~naviの開始から~milli秒数で測定される。 例えば,文書の~naviの開始は、 時刻 0 で生じる。 語 “〜の時刻” は、[ 文書の~naviの開始から その時点までに経過した~milli秒数 ]による時刻を指す。 この[ 時刻の定義 ]は、 `HR-TIME$r に基づく。 ◎ Throughout this work, all time values are measured in milliseconds since the start of navigation of the document. For example, the start of navigation of the document occurs at time 0. The term current time refers to the number of milliseconds since the start of navigation of the document until the current moment in time. This definition of time is based on [HR-TIME] specification.
3. ~naviの計時
3.1. `PerformanceEntry^I ~interfaceとの関係
`PerformanceNavigationTiming$I ~interfaceは、 以下に挙げる[ `PerformanceEntry$I ~interfaceの属性 ]を拡張する: ◎ PerformanceNavigationTiming interface extends the following attributes of PerformanceEntry interface:
- `entryType$m 取得子~手続きは ⇒ ~RET `navigation^l ◎ The entryType getter step is to return the DOMString "navigation".
- `startTime$m 取得子~手続きは ⇒ ~RET `DOMHighResTimeStamp$I 値 0 ◎ The startTime getter step is to return a DOMHighResTimeStamp with a time value of 0.
- `duration$m 取得子~手続きは ⇒ ~RET [ コレの `startTime$m からコレの `loadEventEnd$m までの時間~差 ]に等しい `DOMHighResTimeStamp$I 値 ◎ The duration getter step is to return a DOMHighResTimeStamp equal to the difference between loadEventEnd and this’s startTime.
注記: `PerformanceNavigationTiming$I を実装する~UAは、 その~supportを開発者が検出できるよう,`~window$文脈~用の `supportedEntryTypes$m 内に `navigation^l を含める必要がある。 ◎ A user agent implementing PerformanceNavigationTiming would need to include "navigation" in supportedEntryTypes for Window contexts. This allows developers to detect support for Navigation Timing.
3.2. `PerformanceResourceTiming^I ~interfaceとの関係
`PerformanceNavigationTiming$I ~interfaceは、 以下に挙げる[ `PerformanceResourceTiming$I ~interfaceの属性 ]を拡張する: ◎ PerformanceNavigationTiming interface extends the following attributes of the PerformanceResourceTiming interface:
-
`redirectStart$m 取得子~手続きは: ◎ The redirectStart getter steps are to perform the following steps:
- ~IF[ コレの`~redirect回数$pT ~EQ 0 ] ⇒ ~RET 0 ◎ If this’s redirect count is 0, return 0.
-
~RET コレの【~prototypeの】 `redirectStart$m 取得子~手続き() ◎ Otherwise return this’s redirectStart.
【 すなわち, `PerformanceResourceTiming$I の `redirectStart$m 用に定義された取得子~手続きを遂行する (以下における他の~IDL属性も同様)。 】
-
`redirectEnd$m 取得子~手続きは: ◎ The redirectEnd getter steps are to perform the following steps:
- ~IF[ コレの`~redirect回数$pT ~EQ 0 ] ⇒ ~RET 0 ◎ If this’s redirect count is 0, return 0.
- ~RET コレの【~prototypeの】 `redirectEnd$m 取得子~手続き() ◎ Otherwise return this’s redirectEnd.
注記: [ `redirectStart$m, `redirectEnd$m ]は, `PerformanceResourceTiming$I において公開されるが、 `PerformanceNavigationTiming$I における それらの意味は異なる — それらは、 非同一-生成元な~redirectを伴う~navi用には, いずれも 0 を返す。 ◎ Though `redirectStart` and `redirectEnd` are exposed in PerformanceResourceTiming, they have a different meaning in Navigation Timing, where they return zero for navigations with cross-origin redirects.
-
`workerStart$m 取得子~手続きは: ◎ The workerStart getter steps are to perform the following steps:
- %~worker計時 ~LET コレの`~sw計時$pT ◎ Let workerTiming be this’s service worker timing.
- ~IF[ %~worker計時 ~EQ ~NULL ] ⇒ ~RET コレの~prototypeの `workerStart$m 取得子~手続き() ◎ If workerTiming is null, then return this’s prototype’s `workerStart`.
- ~RET %~worker計時 の`開始~時刻$swT ◎ Return workerTiming’s start time.
注記: `workerStart$m は, `PerformanceResourceTiming$I において公開されるが、 `PerformanceNavigationTiming$I における その意味は異なる — ~naviは、 下位資源と違って, ~swの[ 作動化/稼働 ]を誘発し得るので。 ~navi計時の文脈における `workerStart^m は、 当の~workerが作動化されるか開始される直前に測定された時刻印を返す。 精確な定義は、 `service-workers$r を見よ。 ◎ Though `workerStart` is exposed in PerformanceResourceTiming, it has a different meaning in Navigation Timing, as unlike subresources, a navigation may trigger the activation or running of a service worker. In the context of Navigation Timing, `workerStart` returns the timestamp measured just before the worker has been activated or started. See [service-workers] for a precise definition.
-
`fetchStart$m 取得子~手続きは: ◎ The fetchStart getter steps are to perform the following steps:
- %~worker計時 ~LET コレの`~sw計時$pT ◎ Let workerTiming be this’s service worker timing.
- ~IF[ %~worker計時 ~EQ ~NULL ] ⇒ ~RET コレの~prototypeの `fetchStart$m 取得子~手続き() ◎ If workerTiming is null, then return this’s prototype’s `fetchStart`.
- ~RET %~worker計時 の`~fetch~event配送-時刻$swT ◎ Return workerTiming’s fetch event dispatch time.
注記: `~sw$が~naviの一部として利用される場合、 `PerformanceNavigationTiming$I における `fetchStart$m の意味は, `PerformanceResourceTiming$I における それとは異なる。 それは、[ `~sw$に向けて `FetchEvent$I が配送される直前 ]に測定された時刻印を返す。 `現在の文書$の~navi計時~entryにおける[ `workerStart$m と `fetchStart$m の時間~差 ]を利用すれば、 当の~workerが[ 初期化される/作動化される ]までにかかった およその~~時間を決定できる。 精確な定義は、 `service-workers$r を見よ。 ◎ When a service worker is used as part of the navigation, The `fetchStart` overload holds a different meaning than the meaning in PerformanceResourceTiming. It returns the timestamp measured right before the FetchEvent is dispatched for the service worker. The time difference between `workerStart` and `fetchStart` in the document’s navigation timing entry can be used to determine roughly how long it took for the worker to be initialized or activated. See [service-workers] for a precise definition.
注記: `処理能~時列線$に含められるのは、 `現在の文書$を与える資源に限られる — `処理能~時列線$内にある `PerformanceNavigationTiming$I ~objは 1 個に限られる。 ◎ Only the current document resource is included in the performance timeline; there is only one PerformanceNavigationTiming object in the performance timeline.
3.3. `PerformanceNavigationTiming^I ~interface
注記: `~HTTP~cache$ `RFC7234$r を検査して,そこから内容を検索取得することは、 `~fetching$の一部を成す。 それは、[ `requestStart$m, `responseStart$m, `responseEnd$m ]属性が受持つ。 ◎ Checking and retrieving contents from the HTTP cache [RFC7234] is part of the fetching process. It’s covered by the requestStart, responseStart and responseEnd attributes.
[`Exposed$=Window]
interface `PerformanceNavigationTiming@I : `PerformanceResourceTiming$I {
readonly attribute `DOMHighResTimeStamp$ `unloadEventStart$m;
readonly attribute `DOMHighResTimeStamp$ `unloadEventEnd$m;
readonly attribute `DOMHighResTimeStamp$ `domInteractive$m;
readonly attribute `DOMHighResTimeStamp$ `domContentLoadedEventStart$m;
readonly attribute `DOMHighResTimeStamp$ `domContentLoadedEventEnd$m;
readonly attribute `DOMHighResTimeStamp$ `domComplete$m;
readonly attribute `DOMHighResTimeStamp$ `loadEventStart$m;
readonly attribute `DOMHighResTimeStamp$ `loadEventEnd$m;
readonly attribute `NavigationTimingType$I `type$m;
readonly attribute `unsigned short$ `redirectCount$m;
readonly attribute `DOMHighResTimeStamp$ `criticalCHRestart$m;
readonly attribute `NotRestoredReasons$I? `notRestoredReasons$m;
readonly attribute `PerformanceTimingConfidence$I `confidence$m;
[`Default$] object `toJSON()$m;
};
各 `PerformanceNavigationTiming$I ~objには、 次に挙げるものが結付けられる: ◎ ↓
- `文書~load計時@pT ⇒ `文書~load計時~報$ ◎ A PerformanceNavigationTiming has an associated document load timing info document load timing.
- `前-文書の~unload計時@pT ⇒ `文書~unload計時~報$ ◎ A PerformanceNavigationTiming has an associated document unload timing info previous document unload timing.
- `~redirect回数@pT ⇒ 整数 ◎ A PerformanceNavigationTiming has an associated number redirect count.
- `~navi種別@pT ⇒ `NavigationTimingType$I 値 ◎ A PerformanceNavigationTiming has an associated NavigationTimingType navigation type.
-
`~Critical-CH~restart時刻@pT ⇒ `DOMHighResTimeStamp$I 値 ◎ A PerformanceNavigationTiming has an associated DOMHighResTimeStamp `Critical-CH` restart time.
【 ~Critical-CHは、 ~HTTP~header名 — 参考: `仕様@https://www.ietf.org/archive/id/draft-davidben-http-client-hint-reliability-03.html$, `MDN@https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Critical-CH$ 】
- `復旧されない事由~群@pT ⇒ `NotRestoredReasons$I ~obj ◎ A PerformanceNavigationTiming has an associated NotRestoredReasons not restored reasons.
- `確度~値@pT ⇒ ある `PerformanceTimingConfidence$I ~obj ◎ A PerformanceNavigationTiming has an associated PerformanceTimingConfidence confidence value.
- `~random化された誘発-~rate@pT ⇒ ある`実装定義$な実数 ◎ A PerformanceNavigationTiming has an associated real number randomized trigger rate which is implementation-defined.
- `下層の確度~値@pT ⇒ ある`実装定義$な `PerformanceTimingConfidenceValue$I 値 ◎ A PerformanceNavigationTiming has an associated PerformanceTimingConfidenceValue underlying confidence value which is implementation-defined.
- `~sw計時@pT ⇒ ~NULL/`~sw計時~報$ ◎ A PerformanceNavigationTiming has an associated null or service worker timing info service worker timing.
`unloadEventStart@m 取得子~手続きは ⇒ ~RET コレの`前-文書の~unload計時$pTの`~unload~event開始~時刻$ ◎ The unloadEventStart getter steps are to return this’s previous document unload timing’s unload event start time.
注記: 前-文書は在る, かつ それは`現在の文書$と`同一-生成元$である場合、 この時刻印は,~UAが前-文書の `unload^et ~eventを — `文書を~unloadする$手続きの中で — 開始する直前に測定される。 他の場合、 この属性は 0 を返すことになる。 ◎ If the previous document and the current document have the same origin, this timestamp is measured immediately before the user agent starts the unload event of the previous document. If there is no previous document or the previous document has a different origin than the current document, this attribute will return zero.
`unloadEventEnd@m 取得子~手続きは ⇒ ~RET コレの`前-文書の~unload計時$pTの`~unload~event終了~時刻$ ◎ The unloadEventEnd getter steps are to return this’s previous document unload timing’s unload event end time.
注記: 前-文書は在る, かつ それは`現在の文書$と`同一-生成元$である場合、 この時刻印は,~UAが前-文書の `unload^et ~eventを — `文書を~unloadする$手続きの中で — 取扱った直後に測定される。 他の場合、 この属性は 0 を返すことになる。 ◎ If the previous document and the current document have the same origin, this timestamp is measured immediately after the user agent handles the unload event of the previous document. If there is no previous document or the previous document has a different origin than the current document, this attribute will return zero.
`domInteractive@m 取得子~手続きは ⇒ ~RET コレの`文書~load計時$pTの`~DOMヤリトリあり時刻$ ◎ The domInteractive getter steps are to return this’s document load timing’s DOM interactive time.
注記: この時刻印は、 ~UAが`現在の文書$の`現在の準備度$docを `interactive^l に`設定する@~HTMLdom#update-the-current-document-readiness$前【!~HTMLparsing#the-end】に測定される。 ◎ This timestamp is measured before the user agent sets the current document readiness to "interactive".
`domContentLoadedEventStart@m 取得子~手続きは ⇒ ~RET コレの`文書~load計時$pTの`~DOMContentLoaded~event開始~時刻$ ◎ The domContentLoadedEventStart getter steps are to return this’s document load timing’s DOM content loaded event start time.
注記: この時刻印は、 ~UAが`現在の文書$に向けて `DOMContentLoaded^et `~eventを配送する@~HTMLparsing#the-end:event-domcontentloaded$直前に測定される。 ◎ This timestamp is measured before the user agent dispatches the DOMContentLoaded event.
`domContentLoadedEventEnd@m 取得子~手続きは ⇒ ~RET コレの`文書~load計時$pTの`~DOMContentLoaded~event終了~時刻$ ◎ The domContentLoadedEventEnd getter steps are to return this’s document load timing’s DOM content loaded event end time.
注記: この時刻印は、 ~UAが`現在の文書$に対する `DOMContentLoaded^et `~eventの取扱い@~HTMLparsing#the-end:event-domcontentloaded$を完了した直後に測定される。 ◎ This timestamp is measured after the user agent completes handling of the DOMContentLoaded event.
`domComplete@m 取得子~手続きは ⇒ ~RET コレの`文書~load計時$pTの`~DOM完了-時刻$ ◎ The domComplete getter steps are to return this’s document load timing’s DOM complete time.
注記: この時刻印は、 ~UAが`現在の文書$の`現在の準備度$docを `complete^l に`設定する@~HTMLdom#update-the-current-document-readiness$【!~HTMLparsing#the-end】前に測定される。 精確な定義は、 `現在の準備度$docを見よ。 ◎ This timestamp is measured before the user agent sets the current document readiness to "complete". See document readiness for a precise definition.
`loadEventStart@m 取得子~手続きは ⇒ ~RET コレの`文書~load計時$pTの`~load~event開始~時刻$ ◎ The loadEventStart getter steps are to return this’s document load timing’s load event start time.
注記: この時刻印は、 ~UAが`現在の文書$に向けて `load$et `~eventを配送する@~HTMLparsing#the-end:event-load$【!the-end:event-event-load】直前に測定される。 ◎ This timestamp is measured before the user agent dispatches the load event for the document.
`loadEventEnd@m 取得子~手続きは ⇒ ~RET コレの`文書~load計時$pTの`~load~event終了~時刻$ ◎ The loadEventEnd getter steps are to return this’s document load timing’s load event end time.
注記: この時刻印は、 ~UAが`現在の文書$に対する `load$et `~eventの取扱い@~HTMLparsing#the-end:event-load$【!the-end:event-event-load】を完了した後に測定される。 ◎ This timestamp is measured after the user agent completes handling the load event for the document.
`type@m 取得子~手続きは ⇒ ~RET【!to run the】 コレの`~navi種別$pT ◎ The type getter steps are to run the this’s navigation type.
注記: `refresh$v ~pragma指令を利用する類いの,~client側~redirectは、 この仕様においては`~HTTP~redirect$とは見なされない。 そのような事例では、 `type$m 属性は適切な値を返すベキである — [ 現在の~pageを~reloadしている場合は `reload$l / 新たな~URLへ~navigateしている場合は `navigate$l ]など。 ◎ Client-side redirects, such as those using the Refresh pragma directive, are not considered HTTP redirects by this spec. In those cases, the type attribute SHOULD return appropriate value, such as reload if reloading the current page, or navigate if navigating to a new URL.
`redirectCount@m 取得子~手続きは ⇒ ~RET コレの`~redirect回数$pT ◎ The redirectCount getter steps are to return this’s redirect count.
`criticalCHRestart@m 取得子~手続きは ⇒ ~RET コレの`~Critical-CH~restart時刻$pT ◎ The criticalCHRestart getter steps are to return this’s `Critical-CH` restart time.
注記: `criticalCHRestart$m は、 0 でないならば,[ `navigationStart$1【 `timeOrigin$m 】, `unloadEventStart$m, `unloadEventEnd$m ]以外の時刻印より前になる — それは、[ ~naviの~redirectionを成す部分が~restartした時点 ]を~markするので。 ◎ If criticalCHRestart is not 0 it will be before all other timestamps except for navigationStart, unloadEventStart, and unloadEventEnd. This is because it marks the moment the redirection part of the navigation was restarted.
`confidence@m 取得子~手続きは: ◎ The confidence getter steps are to run these steps:
- ~IF[ コレ の`文書~load計時$pTの`~DOMヤリトリあり時刻$ ~EQ 0 ] ⇒ ~RET ~NULL ◎ If this’s document load timing’s DOM interactive time is 0, return null.
- ~IF[ コレの`確度~値$pT ~NEQ ~NULL ] ⇒ ~RET コレの`確度~値$pT ◎ If this’s confidence value is not null, return it.
- %確度 ~LET `新たな~obj$( `PerformanceTimingConfidence$I, コレに【!`関連な設定群~obj$に】`関連な~realm$ ) ◎ Let confidence be a new PerformanceTimingConfidence object created in this’s relevant settings object’s relevant realm.
- %p ~LET コレの`~random化された誘発-~rate$pT ◎ ↓
- %確度 の`randomizedTriggerRate$mC ~SET %p ◎ Set confidence’s randomizedTriggerRate to this’s randomized trigger rate.
- %確度 の `value$mC ~SET 次に挙げるいずれかを~randomに選んだ結果 ⇒# ( 1 ~MINUS %p ) の確率で コレの`下層の確度~値$pT/ %p ~DIV 2 の確率で `high$l / %p ~DIV 2 の確率で `low$l ◎ Set confidence’s value as determined by the following algorithm: • Let p be confidence’s randomizedTriggerRate. • Let underlying be this’s underlying confidence value, a PerformanceTimingConfidenceValue. • Let r be a real number drawn uniformly at random from the interval [0, 1). • If r > or equal p, return underlying. • Otherwise: •• Let s be an integer drawn uniformly at random from the set {0, 1}. •• If s equals 0, return high. •• Otherwise, return low.
- ~RET %確度 ◎ Return confidence.
注記: これらの値は、 1 回だけ設定され, コレが存続する限り変化しないベキである。 ◎ These values should be set once, and not change for the lifetime of this.
注記: 以下は、 `RUM provider^en を助けるために意図される… 【以下、この~blockを成す内容は未訳。】
◎ This section is intended to help RUM providers...`toJSON()@m ~methodは、 `既定の~toJSON手続き$に従うとする。 ◎ The toJSON() method runs the default toJSON steps for this.
3.3.1. `NavigationTimingType^I 列挙
enum `NavigationTimingType@I {
`navigate$l,
`reload$l,
`back_forward$l
};
各種 値は、 以下に従うものと定義される: ◎ The values are defined as follows:
- `navigate@l
- 当の~naviにおける`履歴~取扱いの挙動$は[ `push$hH / `replace$hH ]に設定されている。 ◎ Navigation where the history handling behavior is set to "default" or "replace".
- `reload@l
- 当の~naviは、 当の`~navigable$を`読込直した@~HTMLnav#reload$。 ◎ Navigation where the navigable was reloaded.
- `back_forward@l
- 当の~naviは、 `履歴から適用された@~HTMLnav#apply-the-history-step$。 ◎ Navigation that’s applied from history.
注記: 上の列挙~値 `back_forward^l は `~Web~IDLが推奨する列挙~値の形式@~WEBIDL#idl-enums$に整合していないが、 出荷-済み実装との後方-互換性を保つため,変更するわけにはいかない。 `WebIDL$r ◎ The format of the above enumeration value is inconsistent with the WebIDL recommendation for formatting of enumeration values. Unfortunately, we are unable to change it due to backwards compatibility issues with shipped implementations. [WebIDL]
3.3.2. `PerformanceTimingConfidence^I ~interface
[`Exposed$=Window]
interface `PerformanceTimingConfidence@I {
readonly attribute `double$ `randomizedTriggerRate$mC;
readonly attribute `PerformanceTimingConfidenceValue$I `value$mC;
`object$ `toJSON()$mC;
};
- `randomizedTriggerRate@mC
- この属性は、[ 確度 `value$mC を公開するときに~noiseが適用される確率 ]を指示する 0 以上 1 未満の実数を返すモノトスル。 ◎ This attribute must return a real number the interval [0, 1), indicating how often noise is applied when exposing the confidence value.
- `value@mC
- この属性は、 `PerformanceTimingConfidenceValue$I を返すモノトスル。 ◎ This attribute must return a PerformanceTimingConfidenceValue.
`toJSON()@mC ~methodは、 `既定の~toJSON手続き$に従うとする。 ◎ toJSON() • This method runs the default toJSON steps for this.
3.3.3. `PerformanceTimingConfidenceValue^I 列挙型
enum `PerformanceTimingConfidenceValue@I {
`high$l,
`low$l
};
各種~値は、 以下に従うものと定義される: ◎ The values are defined as follows:
- `high@l
- ~UAは、 ~navi計量は[ 現在の利用者の機器を代表するものである ]ものと見なす。 ◎ The user agent considers the navigation metrics to be representative on the current user’s device.
- `low@l
- ~UAは、 ~navi計量は[ 現在の利用者の機器を代表し得るもの ]ではなく[ ~machineの状態/利用者-環境設定 ]であると見なしてもヨイ。 ◎ The navigation metrics may not be representative of the current user’s device. The user agent may consider the state of the machine, or user configuration.
注記: ~UAは、 `下層の確度~値$pTを決定するときは,自身の裁定を`一過な稼働時の条件^em — 次に挙げるもの, その他の短期的な考慮点 — のみに基づくモノトスル ⇒# ~UAの始動~時/ ~CPU利用度が一時的に高い/ 一時的な~memoryの逼迫 ◎ When determining the underlying confidence value, user agents MUST only base their decision on transient runtime conditions, such as user agent startup, temporarily high CPU usage, temporary memory pressure, or other short-lived considerations.
~UAは、 `下層の確度~値$pTが永続的な[ 機器/~profile ]特性に基づかないようにするモノトスル。 例えば、 次に挙げる要因は,禁制される ⇒# 機器~上の物理的な~RAM量/ ~CPU~coreの個数/ ~install済みな拡張の個数/ その他の静的な環境~設定 ◎ User agents MUST NOT base the underlying confidence value on permanent device or profile characteristics. Examples of prohibited factors include the amount of physical RAM on the device, the number of CPU cores, the number of installed extensions, or other static environment settings.
確度は、[ ~systemの能力ではなく, 稼働時の変動能 ]を反映することが意図される。 ◎ Confidence is intended to reflect runtime variability rather than system capabilities.
4. ~navi計時~属性
【 この節は規範的ではない。 (この節の原文の~titleは “処理n~model” であるが、 処理n~modelは,各種 “計時~報” として他の仕様( `FETCH$r, `HTML$r など)に統合された。) 】 ◎ 4. Process ◎ 4.1. Processing Model
【 原文では,[ ~redirect 〜 応答 ]の箇所にも `PerformanceResourceTiming$I `RESOURCE-TIMING$r に定義される各~属性が記されているが、 その仕様の図式と重複するので,和訳では省略する。 】【 この訳では、 原文の図式( ~SVG )を~HTMLと~CSSによる等価な図式に差し替えている。 】
5. ~navi計時~entryの作成-法
各 `文書$には、 `~navi計時~entry@doc が結付けられ,初期~時には ε (未設定)とする。 ◎ Each document has an associated navigation timing entry, initially unset.
`~navi計時~entryを作成する@ ~algoは、 所与の ⇒# `文書$ %文書, `~fetch計時~報$ %~fetch計時, 整数 %~redirect回数, `NavigationTimingType$I %~navi種別, ~NULL/`~sw計時~報$ %~sw計時, 文字列 %~cache~mode, `DOMHighResTimeStamp$I %~Critical-CH~restart, `応答~本体~報$ %本体~報 ◎終 に対し: ◎ To create the navigation timing entry for Document document, given a fetch timing info fetchTiming, a number redirectCount, a NavigationTimingType navigationType, a null or service worker timing info serviceWorkerTiming, a DOMString cacheMode, a DOMHighResTimeStamp criticalCHRestart, and a response body info bodyInfo, do the following:
- %大域~obj ~LET %文書 に`関連な大域~obj$ ◎ Let global be document’s relevant global object.
- %~realm ~LET %大域~obj の`~realm$gL ◎ ↓
- %~navi計時~entry ~LET `新たな~obj$( `PerformanceNavigationTiming$I, %~realm ) ◎ Let navigationTimingEntry be a new PerformanceNavigationTiming object in global’s realm.
- `資源~計時~entryを設定しておく$( ↓ ) ⇒# %~navi計時~entry, `navigation^l, %文書 の`~URL$doc, %~fetch計時, %~cache~mode, %本体~報 ◎ Setup the resource timing entry for navigationTimingEntry given "navigation", document’s URL, fetchTiming, cacheMode, and bodyInfo.
- %復旧されない事由~群 ~LET `NotRestoredReasons$I ~objを`作成する$NRR( `文書の復旧されない事由~群$( %文書 )【! %文書 の`復旧されない事由~群$pT】【, %~realm】 ) ◎ ↓
- %~navi計時~entry の ⇒# `文書~load計時$pT ~SET %文書 の`~load計時~報$doc, `前-文書の~unload計時$pT ~SET %文書 の`前-文書の~unload計時~報$doc, `~redirect回数$pT ~SET %~redirect回数, `~navi種別$pT ~SET %~navi種別, `~sw計時$pT ~SET %~sw計時, `~Critical-CH~restart時刻$pT ~SET %~Critical-CH~restart, `復旧されない事由~群$pT ~SET %復旧されない事由~群 ◎ Set navigationTimingEntry’s document load timing to document’s load timing info ◎ Set navigationTimingEntry’s previous document unload timing to document’s previous document unload timing. ◎ Set navigationTimingEntry’s redirect count to redirectCount. ◎ Set navigationTimingEntry’s navigation type to navigationType. ◎ Set navigationTimingEntry’s service worker timing to serviceWorkerTiming. ◎ ↓ Set document’s navigation timing entry to navigationTimingEntry. ◎ Set navigationTimingEntry’s `Critical-CH` restart time to criticalCHRestart. ◎ Set navigationTimingEntry’s not restored reasons to the result of creating a NotRestoredReasons object given document’s not restored reasons.
- %文書 の`~navi計時~entry$doc ~SET %~navi計時~entry ◎ ↑
- %大域~obj 【の`処理能~entry~buffer~map$[ `navigation^l ] 】 の`処理能~entry~buffer$に %~navi計時~entry を追加する ◎ add navigationTimingEntry to global’s performance entry buffer.
`~navi計時を~queueする@ ~algoは、 所与の ( `文書$ %文書 ) に対し ⇒ %文書 の`~navi計時~entry$docを`~queueする@~HTMLLS/nav-history-apis.html#queue-a-navigation-performanceentry$~FN ◎ To queue the navigation timing entry for Document document, queue document’s navigation timing entry.
【~FN 原文は `HTML$r の中を参照しているが、 ~link先は存在しない。 たぶん,[ `~navi処理能~entryを~queueする$/`処理能~entryを~queueする$ ]と思われるが、 どちらなのかは不明。 】
~privacyの考慮点
◎非規範的- 情報の流出 ◎ 6.1. Information disclosure
- 注意深く細工された計時~攻撃の利用により、 末端利用者による[ 閲覧/行動 ]の履歴が流出する可能性がある。 一例として、 ~unload時刻から前の~pageの~unload~handlerに要した時間が明らかにされ,利用者の~login状態sの推定-に利用され得る。 これらの攻撃は、 文書を~unloadするときに — `新たな~pageで~session履歴を更新する$ ~algo `HTML$r の中で — `同一-生成元$の検査を施行することにより軽減される。 ◎ There is the potential for disclosing an end-user’s browsing and activity history by using carefully crafted timing attacks. For instance, the unloading time reveals how long the previous page takes to execute its unload handler, which could be used to infer the user’s login status. These attacks have been mitigated by enforcing the same origin check algorithm when unloading a document, as detailed in the HTML spec.
- `緩い同一-生成元~施策$は、 文書~間に渡る,未承認の訪問に対する十分な保護を供さない。 共有d~hostにおいては、 信頼できない第三者-主体が,同じ~IP~addressの異なる~port上で~HTTP~serverを~hostし得る。 ◎ The relaxed same origin policy doesn’t provide sufficient protection against unauthorized visits across documents. In shared hosting, an untrusted third party is able to host an HTTP server at the same IP address but on a different port.
- ~directory間をまたがる~access ◎ 6.2. Cross-directory access
- 同じ~host名を共有する異なる~page — 例えば、 同じ~siteに~hostされている,利用者が生成した内容を伴う, 異なる作者による内容 — は、 ~path名に基いて~accessを制約するような特能がないため,`同一-生成元$から来たものと見なされる。 これらの~page間の~naviに際しては、 後の~pageから,~redirectionや `unload^et ~eventに対する計時など,前の~pageの計時~情報への~accessが可能になる。 ◎ Different pages sharing one host name, for example contents from different authors hosted on sites with user generated content are considered from the same origin because there is no feature to restrict the access by pathname. Navigating between these pages allows a latter page to access timing information of the previous one, such as timing regarding redirection and unload event.
~securityの考慮点
◎非規範的`PerformanceNavigationTiming$I ~interfaceは、 前-文書についての計時~情報を`現在の文書$に公開する。 `PerformanceNavigationTiming$I の属性のうち,前-文書の情報を含むものへの~accessを制限するため、 前-文書を~unloadするときに — `新たな~pageで~session履歴を更新する$ ~algo `HTML$r の中で — `同一-生成元$施策が施行され,【失敗した場合は】前-文書に関係する属性は 0 に設定される。 ◎ The PerformanceNavigationTiming interface exposes timing information about the previous document to the current document. To limit the access to PerformanceNavigationTiming attributes which include information on the previous document, the previous document unloading algorithm enforces the same origin policy and attributes related to the previous document are set to zero.
- ~proxy~serverの検出-法 ◎ 7.1. Detecting proxy servers
- ~UAと~web~serverとの間に~proxyが配備されている場合、 `connectStart$m 属性と `connectEnd$m 属性との間の時区間は、 ~web~serverではなく,~proxyと~UAとの間の待時間を示すものになる。 それにより、 ~web~serverは,~proxyの存在を推定できる可能性がある。 SOCKS ~proxyについては、 この時区間には~proxy認証に要した時間と~proxyが~web~serverへの接続に要した時間も含まれ,~proxyの検出を難しくする。 ~HTTP~proxyの場合、 ~UAは~proxy~serverについての知識を一切持たないこともあるので、 この攻撃を常に軽減できるとは限らない。 ◎ In case a proxy is deployed between the user agent and the web server, the time interval between the connectStart and the connectEnd attributes indicates the delay between the user agent and the proxy instead of the web server. With that, web server can potentially infer the existence of the proxy. For SOCKS proxy, this time interval includes the proxy authentication time and time the proxy takes to connect to the web server, which obfuscate the proxy detection. In case of an HTTP proxy, the user agent might not have any knowledge about the proxy server at all so it’s not always feasible to mitigate this attack.
廃用
この節では、 以前に `NAVIGATION-TIMING$r ~level 1 にて導入された[ 属性, ~interface ]を定義し,後方-互換性のために ここに保つ。 作者には、 以下の~interfaceを利用するべきでない — 新たな `PerformanceNavigationTiming$I ~interfaceを利用することを強く勧める。 `変更点と改善点の要約@#sotd$を見よ。 ◎ This section defines attributes and interfaces previously introduced in [NAVIGATION-TIMING] Level 1 and are kept here for backwards compatibility. Authors should not use the following interfaces and are strongly advised to use the new PerformanceNavigationTiming interface—see summary of changes and improvements.
【この訳( ~level 1 )に特有な表記規約】
この節にて原文が参照する~HTTP用語は,過去の~HTTP仕様 — `RFC2616$r, `RFC7234$r — を参照しているが、 この訳では,最新な~HTTP仕様( ~RFC 9110 〜 9112 )の等価な記述を参照することにする。
用語 “前-文書( `previous document^en )” は、 `現在の文書$へ~navigateされる前の時点で,当の`~navigable$にて`作動中な文書$navであったものを指す(明確には定義されていない)。
以下における `局所~cache等@ は、[ ~HTTP~cache `RFC7234$r /局所~資源 ]を指す総称である。
`PerformanceTiming^I ~interface
[`Exposed$=Window]
interface `PerformanceTiming$I {
readonly attribute `unsigned long long$ `navigationStart$1;
readonly attribute `unsigned long long$ `unloadEventStart$1;
readonly attribute `unsigned long long$ `unloadEventEnd$1;
readonly attribute `unsigned long long$ `redirectStart$1;
readonly attribute `unsigned long long$ `redirectEnd$1;
readonly attribute `unsigned long long$ `fetchStart$1;
readonly attribute `unsigned long long$ `domainLookupStart$1;
readonly attribute `unsigned long long$ `domainLookupEnd$1;
readonly attribute `unsigned long long$ `connectStart$1;
readonly attribute `unsigned long long$ `connectEnd$1;
readonly attribute `unsigned long long$ `secureConnectionStart$1;
readonly attribute `unsigned long long$ `requestStart$1;
readonly attribute `unsigned long long$ `responseStart$1;
readonly attribute `unsigned long long$ `responseEnd$1;
readonly attribute `unsigned long long$ `domLoading$1;
readonly attribute `unsigned long long$ `domInteractive$1;
readonly attribute `unsigned long long$ `domContentLoadedEventStart$1;
readonly attribute `unsigned long long$ `domContentLoadedEventEnd$1;
readonly attribute `unsigned long long$ `domComplete$1;
readonly attribute `unsigned long long$ `loadEventStart$1;
readonly attribute `unsigned long long$ `loadEventEnd$1;
[`Default$] object `toJSON$1();
};
(結果は~consoleではなく,ここに示される)
【 他~pageでも利用できる`ブックマークレット@~bookmarklet1$(結果は~consoleに示される) 】【 `~level 2 実装~用のもの@#_test_level2$もある 】
注記: この節に定義されるすべての時刻~値は、 1970 年 1 月 1 日, 午前 0 時( UTC )から~milli秒数で測定される。 ◎ All time values defined in this section are measured in milliseconds since midnight of January 1, 1970 (UTC).
- `navigationStart@1
- 前-文書があるならば ~UAが前-文書に対し`~unloadを~prompt$し終えた直後の時刻 / ~ELSE_ 現在の文書が作成された時刻を返すモノトスル。 ◎ This attribute must return the time immediately after the user agent finishes prompting to unload the previous document. If there is no previous document, this attribute must return the time the current document is created.
- 注記: この属性は、 `PerformanceNavigationTiming$I 用には定義されていない。 作者は、 代わりに `timeOrigin$m を利用して,等価な時刻印を得せる。 ◎ This attribute is not defined for PerformanceNavigationTiming. Instead, authors can use timeOrigin to obtain an equivalent timestamp.
- `unloadEventStart@1
- 前-文書がある, かつ 前-文書と現在の文書が`同一-生成元$に属する場合は,~UAが前-文書の `unload^et ~eventを開始する直前の時刻 / ~ELSE_ 0 を返すモノトスル。 ◎ If the previous document and the current document have the same origin, this attribute must return the time immediately before the user agent starts the unload event of the previous document. If there is no previous document or the previous document has a different origin than the current document, this attribute must return zero.
- `unloadEventEnd@1
- 前-文書はある, かつ 前-文書と現在の文書が`同一-生成元$に属する, かつ 前-文書の `unload^et ~eventは完了している 場合は,~UAが その~eventを終えた直後の時刻 / ~ELSE_ 0 を返すモノトスル。 ◎ If the previous document and the current document have the same same origin, this attribute must return the time immediately after the user agent finishes the unload event of the previous document. If there is no previous document or the previous document has a different origin than the current document or the unload is not yet completed, this attribute must return zero.
- ~navigate時に`~HTTP~redirect$があって, かつ その中に`同一-生成元$に属さない`~HTTP~redirect$がある場合、[ `unloadEventStart$1, `unloadEventEnd$1 ]は,どちらも 0 を返すモノトスル。 ◎ If there are HTTP redirects when navigating and not all the redirects are from the same origin, both unloadEventStart and unloadEventEnd must return zero.
- `redirectStart@1
- ~navigate時に`~HTTP~redirect$があって, かつ すべての`~HTTP~redirect$が`同一-生成元$に属する場合は, `fetchStart$1 と同じ値 / ~ELSE_ 0 を返すモノトスル。 ◎ If there are HTTP redirects when navigating and if all the redirects are from the same origin, this attribute must return the starting time of the fetch that initiates the redirect. Otherwise, this attribute must return zero.
- `redirectEnd@1
- ~navigate時に`~HTTP~redirect$があって, かつ すべての`~HTTP~redirect$が`同一-生成元$に属する場合は,その最後の~redirectを成す応答の最後の~byteを受信した直後の時刻 / ~ELSE_ 0 を返すモノトスル。 ◎ If there are HTTP redirects when navigating and all redirects are from the same origin, this attribute must return the time immediately after receiving the last byte of the response of the last redirect. Otherwise, this attribute must return zero.
- `fetchStart@1
- `GET^hm `要請~method$を利用して新たな資源が`~fetch$された場合は,~UAが~HTTP~cacheの検査を開始する直前の時刻 / ~ELSE_ ~UAが資源の`~fetch$を開始した時刻 を返すモノトスル。 ◎ If the new resource is to be fetched using a "GET" request method, fetchStart must return the time immediately before the user agent starts checking the HTTP cache [RFC7234]. Otherwise, it must return the time when the user agent starts fetching the resource.
- `domainLookupStart@1
- 現在の文書の~domain名~検索を開始する直前の時刻を返すモノトスル。 `持続的な接続$が利用されている,または 現在の文書が`局所~cache等$から検索取得されている場合、 この属性は `fetchStart$1 と同じ値を返すモノトスル。 ◎ This attribute must return the time immediately before the user agent starts the domain name lookup for the current document. If a persistent connection [RFC2616] is used or the current document is retrieved from the HTTP cache [RFC7234] or local resources, this attribute must return the same value as fetchStart.
- `domainLookupEnd@1
- ~UAが現在の文書に対する~domain名~検索を終えた直後の時刻を返すモノトスル。 `持続的な接続$が利用されている,または 現在の文書が`局所~cache等$から検索取得されている場合、 この属性は `fetchStart$1 と同じ値を返すモノトスル。 ◎ This attribute must return the time immediately after the user agent finishes the domain name lookup for the current document. If a persistent connection [RFC2616] is used or the current document is retrieved from the HTTP cache [RFC7234] or local resources, this attribute must return the same value as fetchStart.
- 注記: `~HTTP~cache$からの内容の 検査と検索取得は`~fetching$の一部である。 それは、[ `requestStart$1, `responseStart$1, `responseEnd$1 ]属性が受持つ。 ◎ Checking and retrieving contents from the HTTP cache [RFC2616] is part of the fetching process. It’s covered by the requestStart, responseStart and responseEnd attributes.
- 注記: ~UAが~cache内に~domain情報をすでに持っている場合、[ `domainLookupStart$1, `domainLookupEnd$1 ]は,順に,~UAによる~cacheからの~domain~dataの検索取得を[ 開始, 終了 ]した時刻を表現する。 ◎ In case where the user agent already has the domain information in cache, domainLookupStart and domainLookupEnd represent the times when the user agent starts and ends the domain data retrieval from the cache.
- `connectStart@1
- ~UAが文書を検索取得するために~serverへの接続を確立し始める直前の時刻を返すモノトスル。 `持続的な接続$が利用されている,または 現在の文書が`局所~cache等$から検索取得されている場合、 この属性は `domainLookupEnd$1 と同じ値を返すモノトスル。 ◎ This attribute must return the time immediately before the user agent start establishing the connection to the server to retrieve the document. If a persistent connection [RFC2616] is used or the current document is retrieved from the HTTP cache [RFC7234] or local resources, this attribute must return value of domainLookupEnd.
- `connectEnd@1
- ~UAが文書を検索取得するための~serverへの接続を確立し終えた直後の時刻を返すモノトスル。 `持続的な接続$が利用されている,または 現在の文書が`局所~cache等$から検索取得されている場合、 この属性は `domainLookupEnd$1 と同じ値を返すモノトスル。 ◎ This attribute must return the time immediately after the user agent finishes establishing the connection to the server to retrieve the current document. If a persistent connection [RFC2616] is used or the current document is retrieved from the HTTP cache [RFC7234] or local resources, this attribute must return the value of domainLookupEnd.
- ~transport接続が失敗し, かつ~UAが接続を再び開いた場合、[ `connectStart$1, `connectEnd$1 ]は,新たな接続に対応する値を返すべきである。 ◎ If the transport connection fails and the user agent reopens a connection, connectStart and connectEnd should return the corresponding values of the new connection.
- `connectEnd$1 には、 SSL ~handshakeや SOCKS 認証も含めて,~transport接続を確立するのに要した時間も含めるモノトスル。 ◎ connectEnd must include the time interval to establish the transport connection as well as other time interval such as SSL handshake and SOCKS authentication.
- `secureConnectionStart@1
- この属性の~supportは任意選択~である。 ~UAは、 この属性を可用にしない場合は, `undefined^c を返すモノトスル。 可用にする場合、[[ 現在の~pageの`~URL~scheme$ `URL$r ~EQ `https^l ]ならば 現在の接続を~secureにするための~handshake処理-を開始する直前の時刻 / ~ELSE_ 0 ]を返すモノトスル。 ◎ This attribute is optional. User agents that don’t have this attribute available must set it as undefined. When this attribute is available, if the scheme [URL] of the current page is "https", this attribute must return the time immediately before the user agent starts the handshake process to secure the current connection. If this attribute is available but HTTPS is not used, this attribute must return zero.
- `requestStart@1
- ~UAが,現在の文書を[ ~serverから, または`局所~cache等$から ]得るために 要請を開始した直前の時刻を返すモノトスル。 ◎ This attribute must return the time immediately before the user agent starts requesting the current document from the server, or from the HTTP cache [RFC7234] or from local resources.
- 要請を送信した後に~transport接続が失敗して, ~UAが接続を再び開いて要請を送信し直していた場合、 `requestStart$1 は,新たな要請に対応している値を返すべきである。 ◎ If the transport connection fails after a request is sent and the user agent reopens a connection and resend the request, requestStart should return the corresponding values of the new request.
-
注記: この~interfaceには
requestEndのような類いの,要請の送信の完了を表現する属性は含まれていない: ◎ This interface does not include an attribute to represent the completion of sending the request, e.g., requestEnd.- ~UAからの要請の送信の完了は、 (その種の属性の便益のほとんどを占める)~network~transportにおける対応する完了時刻を常に指示するとは限らない。 ◎ Completion of sending the request from the user agent does not always indicate the corresponding completion time in the network transport, which brings most of the benefit of having such an attribute.
- 一部の~UAにおいては、 ~HTTP層の~capsule化に因り, 要請の送信を実際に完了した時刻を決定するのに~costがかかる。 ◎ Some user agents have high cost to determine the actual completion time of sending the request due to the HTTP layer encapsulation.
- `responseStart@1
- ~UAが~serverからの, または`局所~cache等$からの,応答の最初の~byteを受信した直後の時刻を返すモノトスル。 ◎ This attribute must return the time immediately after the user agent receives the first byte of the response from the server, or from the HTTP cache [RFC7234] or from local resources.
- `responseEnd@1
- ~UAが 現在の文書の最後の~byteを受信した直後の時刻と, ~transport接続が閉じらる直前の時刻のうち,早い方を返すモノトスル。 ここでの文書は、[ ~server, `局所~cache等$ ]いずれかから受信されたものも含まれる。 ◎ This attribute must return the time immediately after the user agent receives the last byte of the current document or immediately before the transport connection is closed, whichever comes first. The document here can be received either from the server, the HTTP cache [RFC7234] or from local resources.
- `domLoading@1
- ~UAが文書の`現在の準備度$docを `loading^l に設定する直前の時刻を返すモノトスル。 ◎ This attribute must return the time immediately before the user agent sets the current document readiness to "loading".
- 既存の~UA内で`文書$が いつ作成されたかの違いに因り,この属性が返す値は実装に特有であり、 有意義な計量に利用されるべきではない。 ◎ Due to differences in when a Document object is created in existing user agents, the value returned by the domLoading is implementation specific and should not be used in meaningful metrics.
- `domInteractive@1
- ~UAが文書の`現在の準備度$docを `interactive^l に設定する直前の時刻を返すモノトスル。 ◎ This attribute must return the time immediately before the user agent sets the current document readiness to "interactive".
- `domContentLoadedEventStart@1
- ~UAが`文書$に向けて `DOMContentLoaded$et ~eventを発火する直前の時刻を返すモノトスル。 ◎ This attribute must return the time immediately before the user agent fires the DOMContentLoaded event at the Document.
- `domContentLoadedEventEnd@1
- 文書の が完了した直後の時刻を返すモノトスル。 ◎ This attribute must return the time immediately after the document’s DOMContentLoaded event completes.
- `domComplete@1
- ~UAが文書の`現在の準備度$docを `complete^l に設定する直前の時刻を返すモノトスル。 ◎ This attribute must return the time immediately before the user agent sets the current document readiness to "complete".
- 文書の`現在の準備度$docが複数回にわたり同じ状態に変化した場合、 `domLoading$1, `domInteractive$1, `domContentLoadedEventStart$1, `domContentLoadedEventEnd$1, `domComplete$1 は、 最初に生じた 文書の`現在の準備度$docの変化に対応している時刻を返すモノトスル。 ◎ If the current document readiness changes to the same state multiple times, domLoading, domInteractive, domContentLoadedEventStart, domContentLoadedEventEnd and domComplete must return the time of the first occurrence of the corresponding document readiness change.
- `loadEventStart@1
- 現在の文書に `load$et ~eventが発火される直前の時刻を返すモノトスル。 `load$et ~eventがまだ発火されていないときには、 0 を返すモノトスル。 ◎ This attribute must return the time immediately before the load event of the current document is fired. It must return zero when the load event is not fired yet.
- `loadEventEnd@1
- 現在の文書の `load$et ~eventの発火が完了した時刻を返すモノトスル。 `load$et [ ~eventがまだ発火されていない/まだ完了していない ]ときには、 0 を返すモノトスル。 ◎ This attribute must return the time when the load event of the current document is completed. It must return zero when the load event is not fired or is not completed.
- `toJSON@1
- コレ用の`既定の~toJSON手続き$を走らす。 ◎ Runs the default toJSON steps for this.
`PerformanceNavigation^I ~interface
[`Exposed$=Window]
interface `PerformanceNavigation$I {
const `unsigned short$ `TYPE_NAVIGATE$1n = 0;
const `unsigned short$ `TYPE_RELOAD$1n = 1;
const `unsigned short$ `TYPE_BACK_FORWARD$1n = 2;
const `unsigned short$ `TYPE_RESERVED$1n = 255;
readonly attribute `unsigned short$ `type$1n;
readonly attribute `unsigned short$ `redirectCount$1n;
[`Default$] object `toJSON$1n();
};
- `TYPE_NAVIGATE@1n
- 当の~naviにおける`履歴~取扱いの挙動$は[ `push$hH / `replace$hH ]に設定されている。 ◎ Navigation where the history handling behavior is set to "default" or "replace".
- `TYPE_RELOAD@1n
- 当の~naviにおける`履歴~取扱いの挙動$は `再読込み^i に設定されている。 【この記述は、過去の~HTML仕様に基づく — `reload$l を見よ。】 ◎ Navigation where the history handling behavior is set to "reload".
- `TYPE_BACK_FORWARD@1n
- 当の~naviにおける`履歴~取扱いの挙動$は `~entry更新^i に設定されている。 【この記述は、過去の~HTML仕様に基づく — `back_forward$l を見よ。】 ◎ Navigation where the history handling behavior is set to "entry update".
- `TYPE_RESERVED@1n
- 上で定義されない任意の種別の~navi。 ◎ Any navigation types not defined by values above.
- `type@1n
- 最後の非~redirect`~navi$の種別を[ 上に挙げた いずれかの定数~値 ]として返すモノトスル。 ◎ This attribute must return the type of the last non-redirect navigation. It must have one of the following navigation type values.
- 注記: `refresh$v ~pragma指令を利用する類いの,~client側による~redirectは、 この仕様においては`~HTTP~redirect$とは見なされない。 それらの場合,この属性は、[ 現在の~pageを~reloadしている場合は `TYPE_RELOAD$1n / 新たな~URLへ~navigateしている場合は `TYPE_NAVIGATE$1n ]など,適切な値を返すべきである。 ◎ Client-side redirects, such as those using the Refresh pragma directive, are not considered HTTP redirects by this spec. In those cases, the type attribute should return appropriate value, such as TYPE_RELOAD if reloading the current page, or TYPE_NAVIGATE if navigating to a new URL.
- `redirectCount@1n
- 最後の非~redirect~naviからの~redirect回数を返すモノトスル。 [ そのような~redirectは無い, または 行先~文書と`同一-生成元$に属さない~redirectがある ]場合、 0 を返すモノトスル。 ◎ This attribute must return the number of redirects since the last non-redirect navigation. If there is no redirect or there is any redirect that is not from the same origin as the destination document, this attribute must return zero.
- `toJSON@1n
- コレ用の`既定の~toJSON手続き$を走らす。 ◎ Runs the default toJSON steps for this.
`Performance^I ~interfaceに対する拡張
[`Exposed$=Window]
partial interface `Performance$I {
[`SameObject$]
readonly attribute `PerformanceTiming$I `timing$1;
[`SameObject$]
readonly attribute `PerformanceNavigation$I `navigation$1;
};
`Performance$I ~interfaceは `PERFORMANCE-TIMELINE-2$r にて定義される。 【今や, `HR-TIME$r にて定義される。】 【! ~TIMELINE#extensions-to-the-performance-interface】 ◎ The Performance interface is defined in [PERFORMANCE-TIMELINE-2].
- `timing@1
- 最後の非~redirect ~navi以降の計時~情報を表現する。 ◎ The timing attribute represents the timing information since the last non-redirect navigation.\
- この属性は `PerformanceTiming$I ~interfaceにより定義される。 ◎ This attribute is defined by the PerformanceTiming interface.
- `navigation@1
- この属性は `PerformanceNavigation$I ~interfaceにより定義される。 ◎ The navigation attribute is defined by the PerformanceNavigation interface.
謝辞
貢献された次の方々に感謝する:
Thanks to Anne Van Kesteren, Arvind Jain, Boris Zbarsky, Jason Weber, Jonas Sicking, James Simonsen, Karen Anderson, Nic Jansma, Philippe Le Hegaret, Steve Souders, Todd Reifsteck, Tony Gentilcore, William Chan and Zhiheng Wang for their contributions to this work.
