Navigation:updateCurrentEntry() 方法

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

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

Navigation 接口的 updateCurrentEntry() 方法更新 currentEntrystate;用于状态改变且与导航或重新加载无关的情况。

语法

js
updateCurrentEntry(options)

参数

options

包含以下属性的选项对象:

state

导航完成后,开发者定义的信息将存储在关联的 NavigationHistoryEntry 中,可通过 getState() 检索。这可以是任何数据类型。例如,你可能希望存储页面访问次数以用于分析目的,或者存储 UI 状态详细信息,以便视图可以与用户上次离开时​​完全相同地显示。存储在 state 中的任何数据都必须可结构化克隆

返回值

无(undefined)。

异常

DataCloneError DOMException

如果 state 参数中包含不可结构化克隆的值,则抛出此异常。

InvalidStateError DOMException

如果 Navigation.currentEntrynull,即没有当前历史记录条目,则抛出此异常。例如,如果当前页面为 about:blank,则可能会发生这种情况。

示例

你可以使用类似下面的方法更新 <details> 元素的打开/关闭状态,以便在重新加载页面或从其他地方导航回来时可以恢复状态。

js
detailsElem.addEventListener("toggle", () => {
  navigation.updateCurrentEntry({ state: { detailOpen: detailsElem.open } });
});

规范

Specification
HTML
# dom-navigation-updatecurrententry-dev

浏览器兼容性

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
updateCurrentEntry
Experimental

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support
Experimental. Expect behavior to change in the future.
See implementation notes.

参见