Navigation: reload() 方法

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

實驗性: 這是一項實驗性技術
在生產中使用此技術之前,請仔細檢查瀏覽器相容性表格

Navigation 介面的 reload() 方法會重新載入當前 URL,並更新歷史條目列表中的任何提供的狀態。

語法

js
reload()
reload(options)

引數

options 可選

一個包含以下屬性的選項物件

state 可選

在導航完成後要儲存在關聯的 NavigationHistoryEntry 中的開發者定義的資訊,可以透過 getState() 檢索。這可以是任何資料型別。例如,您可能希望儲存頁面訪問次數以用於分析,或者儲存 UI 狀態詳細資訊,以便可以顯示使用者上次離開時的檢視。儲存在 state 中的任何資料都必須是 結構化克隆 的。

info 可選

要傳遞給 navigate 事件的開發者定義的資訊,可在 NavigateEvent.info 中訪問。這可以是任何資料型別。例如,您可能希望根據內容的導航方式(左滑、右滑或主頁)以不同的動畫顯示新導航的內容。可以將指示使用哪種動畫的字串作為 info 傳遞。

返回值

具有以下屬性的物件:

committed

一個 Promise,當可見 URL 已更改且已建立新的 NavigationHistoryEntry 時,它將fulfilled。

finished

一個 Promise,當 intercept() 處理程式返回的所有 Promise 都 fulfilled 時,它將 fulfilled。這相當於 NavigationTransition.finished Promise fulfilled,當 navigatesuccess 事件觸發時。

如果導航因某種原因失敗,則這兩個 Promise 中的任何一個都會 rejected。

異常

DataCloneError DOMException

如果 state 引數包含的值不是結構化克隆的,則丟擲此錯誤。

示例

使用資訊和狀態

js
async function handleReload() {
  await navigation.reload({
    info: { animation: "fade-in" },
    state: { infoPaneOpen: true },
  }).finished;

  // Update application state
  // …
}

重新載入頁面並新增新的狀態項

js
async function handleReload() {
  await navigation.reload({
    state: { ...navigation.currentEntry.getState(), newState: 3 },
  }).finished;

  // Update application state
  // …
}

規範

規範
HTML
# dom-navigation-reload-dev

瀏覽器相容性

另見