webNavigation
為導航的各個階段新增事件監聽器。導航是指瀏覽器中的一個框架從一個 URL 過渡到另一個 URL,通常(但不總是)響應使用者操作,如點選連結或在位址列輸入 URL。
與 webRequest API 相比:導航通常會導致瀏覽器發出 Web 請求,但 webRequest API 關注的是 HTTP 層的低階檢視,而 webNavigation API 更關注瀏覽器 UI 本身的檢視。
每個事件對應導航中的一個特定階段。事件序列如下:

-
主要流程是:
-
此外:
- 如果瀏覽器需要為導航建立新標籤頁或視窗(例如,因為使用者在新標籤頁中開啟連結),則會在
onBeforeNavigate之前觸發onCreatedNavigationTarget。 - 如果頁面使用 History API 更新瀏覽器位址列中顯示的 URL,則會觸發
onHistoryStateUpdated。 - 如果頁面的 片段識別符號發生更改,則會觸發
onReferenceFragmentUpdated。 onErrorOccurred可以在任何時候觸發。
- 如果瀏覽器需要為導航建立新標籤頁或視窗(例如,因為使用者在新標籤頁中開啟連結),則會在
每次導航都是特定瀏覽器框架中的 URL 轉換。瀏覽器框架由標籤頁 ID 和框架 ID 標識。框架可以是標籤頁中的頂層瀏覽上下文,也可以是作為 iframe 實現的巢狀瀏覽上下文。
每個事件的 addListener() 呼叫都接受一個可選的 filter 引數。filter 將指定一個或多個 URL 模式,然後事件僅為目標 URL 與其中一個模式匹配的導航觸發。
onCommitted 事件監聽器會傳遞兩個附加屬性:一個 TransitionType,指示導航的原因(例如,使用者點選了連結,或使用者選擇了書籤);以及一個 TransitionQualifier,提供有關導航的進一步資訊。
要使用此 API,您需要擁有 "webNavigation" 許可權。
型別
-
導航的原因:例如,使用者點選了連結,或鍵入了地址,或點選了書籤。
-
有關過渡的額外資訊。
函式
-
檢索有關特定框架的資訊。框架可以是標籤頁中的頂層框架,也可以是巢狀的 iframe,它由標籤頁 ID 和框架 ID 唯一標識。
-
給定一個標籤頁 ID,檢索其中包含的所有框架的資訊。
事件
-
在瀏覽器即將開始導航事件時觸發。
-
在導航已提交時觸發。伺服器已接收到新文件的至少一部分,並且瀏覽器已決定切換到新文件。
-
在頁面觸發 DOMContentLoaded 事件時觸發。
-
當文件(包括它引用的資源)完全載入並初始化時觸發。這等同於 DOM 的
load事件。 -
發生錯誤且導航被中止時觸發。這可能發生在網路錯誤發生時,或使用者中止導航時。
-
當建立新視窗或現有視窗中的新標籤頁來託管導航時觸發:例如,如果使用者在新標籤頁中開啟連結。
-
如果頁面的 片段識別符號發生更改,則觸發。
-
當標籤頁的內容被另一個(通常是之前預渲染的)標籤頁替換時觸發。
-
當頁面使用 History API 更新瀏覽器位址列中顯示的 URL 時觸發。
擴充套件程式示例
瀏覽器相容性
載入中…
注意: 此 API 基於 Chromium 的 chrome.webNavigation API。此文件源自 Chromium 程式碼中的 web_navigation.json。