NavigationHistoryEntry
NavigationHistoryEntry
是 导航 API 的一个接口,它表示单个导航历史条目。
通常可以通过 Navigation.currentEntry
属性和 Navigation.entries()
方法访问这些对象。
导航 API 仅公开在当前浏览上下文中创建且与当前页面具有相同来源的历史条目(例如,嵌入式 <iframe>
中的导航或跨源导航除外),从而为您的应用提供所有先前历史条目的准确列表。这使得遍历历史记录比使用旧的 历史记录 API 更加稳定。
实例属性
继承自其父级 EventTarget
的属性。
id
只读 实验性-
返回历史条目的
id
。这是一个唯一的、UA 生成的值,始终表示特定的历史条目,可用于将其与外部资源(例如存储缓存)相关联。 index
只读 实验性-
返回历史条目在历史条目列表中的索引(即
Navigation.entries()
返回的列表),如果条目未出现在列表中,则返回-1
。 key
只读 实验性-
返回历史条目的
key
。这是一个唯一的、UA 生成的值,表示历史条目在条目列表中的槽位,而不是条目本身。它用于通过Navigation.traverseTo()
导航到该特定槽位。key
将被替换列表中条目的其他条目重用(即,如果NavigateEvent.navigationType
为replace
)。 sameDocument
只读 实验性-
如果此历史条目与当前
Document
值相同,则返回true
,否则返回false
。 url
只读 实验性-
返回此历史条目的绝对 URL。如果条目对应于与当前条目不同的文档(例如
sameDocument
属性为false
),并且该文档使用设置为no-referrer
或origin
的Referrer-Policy
标头获取,则该属性返回null
。
实例方法
继承自其父级 EventTarget
的方法。
getState()
实验性-
返回与此历史条目关联的可用状态的克隆。
事件
dispose
实验性-
当条目不再是历史条目列表的一部分时触发。
示例
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 |
浏览器兼容性
BCD 表仅在启用了 JavaScript 的浏览器中加载。
另请参阅
- 现代客户端路由:导航 API
- 导航 API 说明
- Domenic Denicola 的 导航 API 实时演示