PerformanceNavigationTiming:notRestoredReasons 属性

实验性: 这是一个 实验性技术
在生产环境中使用此功能前,请仔细查看 浏览器兼容性表格

notRestoredReasonsPerformanceNavigationTiming 接口的只读属性,它返回一个 NotRestoredReasons 对象,该对象提供有关在导航时阻止当前文档使用后退/前进缓存 (bfcache) 的原因的报告数据。

当关联的 PerformanceNavigationTiming 对象表示历史导航时,notRestoredReasons 返回一个 NotRestoredReasons 对象。

PerformanceNavigationTiming 对象不表示历史导航时,notRestoredReasons 将返回 null。这对于确定 bfcache 是否与特定导航无关(而不是 notRestoredReasons 不受支持,在这种情况下它将返回 undefined)非常有用。

注意: 即使导航类型报告为后退/前进导航,notRestoredReasons 也可能返回 null。这些情况包括在新标签页中复制后退/前进导航以及在浏览器重新启动后还原后退/前进导航标签。在这些情况下,某些浏览器会从原始标签复制导航类型,但由于这些实际上不是后退/前进导航,因此 notRestoredReasons 返回 null

示例

可以使用 Performance.getEntriesByType()PerformanceObserver 从性能时间线获取 PerformanceNavigationTiming 数据。

例如,您可以调用以下函数以返回性能时间线中当前存在的所有 PerformanceNavigationTiming 对象并记录其 notRestoredReasons

js
function returnNRR() {
  const navEntries = performance.getEntriesByType("navigation");
  for (let i = 0; i < navEntries.length; i++) {
    console.log(`Navigation entry ${i}`);
    let navEntry = navEntries[i];
    console.log(navEntry.notRestoredReasons);
  }
}

PerformanceNavigationTiming.notRestoredReasons 属性返回一个具有以下结构的对象,该对象提供了阻止当前文档使用 bfcache 的原因。在此示例中,顶级框架没有嵌入的子 <iframe>

js
{
  children: [],
  id: null,
  name: null,
  reasons: [
    { reason: "unload-listener" }
  ],
  src: "",
  url: "example.com",
}

规范

规范
导航计时级别 2
# dom-performancenavigationtiming-notrestoredreasons

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参阅