Navigation: traverseTo() 方法

可用性有限

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

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

Navigation 接口的 traverseTo() 方法会导航到由给定的 key 标识的 NavigationHistoryEntry

语法

js
traverseTo(key)
traverseTo(key, options)

参数

key

要导航到的 NavigationHistoryEntrykey

options 可选

一个包含以下属性的选项对象

info 可选

要传递给 navigate 事件的开发者定义的信息,可在 NavigateEvent.info 中访问。这可以是任何数据类型。例如,您可能希望根据内容的导航方式(左滑、右滑或主页)以不同的动画显示新导航的内容。可以将指示使用哪种动画的字符串作为 info 传递。

返回值

具有以下属性的对象:

committed

一个 Promise,当可见 URL 已更改且已创建新的 NavigationHistoryEntry 时,它将fulfilled。

finished

一个 Promise,当 intercept() 处理程序返回的所有 Promise 都 fulfilled 时,它将 fulfilled。这相当于 NavigationTransition.finished Promise fulfilled,当 navigatesuccess 事件触发时。

如果导航因某种原因失败,则这两个 Promise 中的任何一个都会 rejected。

异常

InvalidStateError DOMException

如果 Navigation.currentEntryNavigationHistoryEntry.index 值为 -1,意味着当前的 Document 尚未激活,或者导航历史列表不包含具有指定 key 的 NavigationHistoryEntry,或者当前的 Document 正在卸载,则会抛出此异常。

示例

设置主页按钮

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
# dom-navigation-traverseto-dev

浏览器兼容性

另见