如何等待 window.performance.timing 中的所有值都已定义

How to wait for all values in window.performance.timing are defined

目前我在 window.addEventListener('load', function () {...}) 函数中读取 window.performance.timing 中的值。然而在 safari 中,像 loadEventEnd 这样的值仍然被设置为 0.

如何以基于事件的最佳方式延迟对 window.performance.timing 的调用,直到定义此值和其他值?

在加载事件中做一个额外的延迟。

window.addEventListener('load', check)

function check() {
  if (performance.getEntriesByType("navigation")[0].loadEventEnd && other_values()) {
    callToPerformanceTiming()
  }
  else setTimeout(check, 0); //put it back in queue
}

只要 loadEventEnd0,就会重复检查。
您也可以检查other_values() 非常安全
它在您执行 callToPerformanceTiming()

之前通过