Navigation:currententrychange 事件
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Navigation
接口的 currententrychange
事件在 Navigation.currentEntry
发生更改时触发。
此事件将会在如下情况发生时触发:
-
同文档导航(例如
back()
或traverseTo()
)。 -
替换(即
navigate()
调用,并将history
参数设置为replace
)。 -
更改条目状态的其他调用(例如
updateCurrentEntry()
,或 History API 的History.replaceState()
)。
此事件在导航提交后触发,这意味着可见 URL 已更改且 NavigationHistoryEntry
已更新。它对于从使用较旧的 API 功能(如 hashchange
事件或 popstate
事件)进行迁移非常有用。
语法
在类似 addEventListener()
这样的方法中使用事件名称,或者设置事件处理器属性。
js
addEventListener("currententrychange", (event) => {});
oncurrententrychange = (event) => {};
事件类型
示例
导航数据上报:
js
navigation.addEventListener("currententrychange", () => {
const data = navigation.currentEntry.getState();
submitAnalyticsData(data.analytics);
});
设置每个条目事件:
js
navigation.addEventListener("currententrychange", () => {
navigation.currentEntry.addEventListener("dispose", genericDisposeHandler);
});
规范
Specification |
---|
HTML Standard # event-currententrychange |
浏览器兼容性
BCD tables only load in the browser
参见
- 现代客户端路由:导航 API
- 导航 API 说明
- Domenic Denicola 的导航 API 在线演示