Performance: timeOrigin-Eigenschaft
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Die schreibgeschützte timeOrigin
-Eigenschaft der Performance
-Schnittstelle gibt den hochauflösenden Zeitstempel zurück, der als Basislinie für leistungsbezogene Zeitstempel verwendet wird.
In Window-Kontexten repräsentiert dieser Wert die Zeit, zu der die Navigation gestartet wurde. In Worker
und ServiceWorker
-Kontexten repräsentiert dieser Wert die Zeit, zu der der Worker ausgeführt wird. Sie können diese Eigenschaft verwenden, um die Zeitursprünge zwischen den Kontexten zu synchronisieren (siehe Beispiel unten).
Hinweis:
Der Wert von performance.timeOrigin
kann von dem Wert abweichen, der von Date.now()
zum Zeitpunkt des Zeitursprungs zurückgegeben wird, da Date.now()
möglicherweise durch system- und benutzerbedingte Uhrzeitanpassungen, Uhrensynchronisationen usw. beeinflusst wurde. Die timeOrigin
-Eigenschaft ist eine monotone Uhr, deren aktuelle Zeit nie zurückgeht und die nicht diesen Anpassungen unterliegt.
Wert
Ein hochauflösender Zeitstempel, der als Beginn der Lebensdauer des aktuellen Dokuments betrachtet wird. Er wird wie folgt berechnet:
-
Wenn das globale Objekt des Skripts ein
Window
ist, wird der Zeitursprung wie folgt bestimmt:- Wenn das aktuelle
Document
das erste ist, das imWindow
geladen wurde, ist der Zeitursprung die Zeit, zu der der Browser-Kontext erstellt wurde. - Wenn während des Prozesses des Entladens des vorherigen Dokuments, das im Fenster geladen war, ein Bestätigungsdialog angezeigt wurde, um dem Benutzer zu erlauben, zu bestätigen, ob die vorherige Seite verlassen werden soll oder nicht, ist der Zeitursprung der Moment, in dem der Benutzer bestätigte, dass die Navigation zur neuen Seite akzeptabel war.
- Wenn keiner der oben genannten Punkte den Zeitursprung bestimmt, ist der Zeitursprung der Moment, in dem die Navigation, die für die Erstellung des aktuellen Dokuments im Fenster verantwortlich ist, stattfand.
- Wenn das aktuelle
-
Wenn das globale Objekt des Skripts ein
WorkerGlobalScope
ist (d.h. das Skript wird als Web Worker ausgeführt), ist der Zeitursprung der Moment, in dem der Worker erstellt wurde. -
In allen anderen Fällen ist der Zeitursprung undefiniert.
Beispiele
Synchronisierung der Zeit zwischen Kontexten
Um die unterschiedlichen Zeitursprünge in Window- und Worker-Kontexten auszugleichen, können Sie die Zeitstempel aus Worker-Skripten mithilfe der timeOrigin
-Eigenschaft übersetzen, sodass die Zeiten für die gesamte Anwendung synchronisiert werden.
In worker.js
self.addEventListener("connect", (event) => {
const port = event.ports[0];
port.onmessage = function (event) {
const workerTaskStart = performance.now();
// doSomeWork()
const workerTaskEnd = performance.now();
};
// Convert worker-relative timestamps to absolute timestamps, then send to the window
port.postMessage({
startTime: workerTaskStart + performance.timeOrigin,
endTime: workerTaskEnd + performance.timeOrigin,
});
});
In main.js
const worker = new SharedWorker("worker.js");
worker.port.addEventListener("message", (event) => {
// Convert absolute timestamps into window-relative timestamps
const workerTaskStart = event.data.startTime - performance.timeOrigin;
const workerTaskEnd = event.data.endTime - performance.timeOrigin;
console.log("Worker task start: ", workerTaskStart);
console.log("Worker task end: ", workerTaskEnd);
});
Spezifikationen
Specification |
---|
High Resolution Time # dom-performance-timeorigin |
Browser-Kompatibilität
BCD tables only load in the browser