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

瀏覽器相容性

另見