NavigationHistoryEntry

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

实验性: 这是一项实验性技术
在生产中使用此技术之前,请仔细检查浏览器兼容性表格

NavigationHistoryEntry 接口是 Navigation API 的一部分,用于表示单个导航历史条目。

这些对象通常可以通过 Navigation.currentEntry 属性和 Navigation.entries() 方法访问。

Navigation API 只会暴露当前浏览上下文(browsing context)中创建的、且与当前页面同源(same origin)的历史条目(例如,不会暴露嵌入式 <iframe> 中的导航,或跨域导航),从而为您的应用程序提供准确的先前历史条目列表。这使得历史记录的遍历比旧的 History API 更加稳定可靠。

EventTarget NavigationHistoryEntry

实例属性

继承其父级 EventTarget 的属性。

id 只读 实验性

返回历史条目的 id。这是一个由用户代理(UA)生成的唯一值,始终代表一个特定的历史条目,可用于将其与外部资源(如缓存)关联。

index 只读 实验性

返回历史条目在历史条目列表(即 Navigation.entries() 返回的列表)中的索引,如果该条目未出现在列表中,则返回 -1

key 只读 实验性

返回历史条目的 key。这是一个由用户代理(UA)生成的唯一值,代表历史条目在条目列表中的槽位(slot),而不是条目本身。它用于通过 Navigation.traverseTo() 导航到该特定槽位。当其他条目替换该条目在列表中的位置时(即 NavigateEvent.navigationTypereplace 时),key 会被重新使用。

sameDocument 只读 实验性

如果此历史条目与当前 Document 对象属于同一个 document,则返回 true,否则返回 false

url 只读 实验性

返回此历史条目的绝对 URL。如果该条目对应于与当前文档不同的文档(类似于 sameDocument 属性为 false),并且该文档是使用 Referrer-Policy 头部设置为 no-referrerorigin 来获取的,则该属性返回 null

实例方法

继承其父级 EventTarget 的方法。

getState() 实验性

返回与此历史条目关联的可用状态的克隆。

事件

dispose 实验性

当条目不再是历史条目列表的一部分时触发。

示例

js
function initHomeBtn() {
  // Get the key of the first loaded entry
  // so the user can always go back to this view.
  const { key } = navigation.currentEntry;
  backToHomeButton.onclick = () => {
    navigation.traverseTo(key);
  };
}
// Intercept navigate events, such as link clicks, and
// replace them with single-page navigations
navigation.addEventListener("navigate", (event) => {
  event.intercept({
    async handler() {
      // Navigate to a different view,
      // but the "home" button will always work.
    },
  });
});

规范

规范
HTML
# the-navigationhistoryentry-interface

浏览器兼容性

另见