webNavigation

為導航的各個階段新增事件監聽器。導航是指瀏覽器中的一個框架從一個 URL 過渡到另一個 URL,通常(但不總是)響應使用者操作,如點選連結或在位址列輸入 URL。

webRequest API 相比:導航通常會導致瀏覽器發出 Web 請求,但 webRequest API 關注的是 HTTP 層的低階檢視,而 webNavigation API 更關注瀏覽器 UI 本身的檢視。

每個事件對應導航中的一個特定階段。事件序列如下:

Visualization of the primary flow and additional flows described below.

每次導航都是特定瀏覽器框架中的 URL 轉換。瀏覽器框架由標籤頁 ID 和框架 ID 標識。框架可以是標籤頁中的頂層瀏覽上下文,也可以是作為 iframe 實現的巢狀瀏覽上下文。

每個事件的 addListener() 呼叫都接受一個可選的 filter 引數。filter 將指定一個或多個 URL 模式,然後事件僅為目標 URL 與其中一個模式匹配的導航觸發。

onCommitted 事件監聽器會傳遞兩個附加屬性:一個 TransitionType,指示導航的原因(例如,使用者點選了連結,或使用者選擇了書籤);以及一個 TransitionQualifier,提供有關導航的進一步資訊。

要使用此 API,您需要擁有 "webNavigation" 許可權

型別

webNavigation.TransitionType

導航的原因:例如,使用者點選了連結,或鍵入了地址,或點選了書籤。

webNavigation.TransitionQualifier

有關過渡的額外資訊。

函式

webNavigation.getFrame()

檢索有關特定框架的資訊。框架可以是標籤頁中的頂層框架,也可以是巢狀的 iframe,它由標籤頁 ID 和框架 ID 唯一標識。

webNavigation.getAllFrames()

給定一個標籤頁 ID,檢索其中包含的所有框架的資訊。

事件

webNavigation.onBeforeNavigate

在瀏覽器即將開始導航事件時觸發。

webNavigation.onCommitted

在導航已提交時觸發。伺服器已接收到新文件的至少一部分,並且瀏覽器已決定切換到新文件。

webNavigation.onDOMContentLoaded

在頁面觸發 DOMContentLoaded 事件時觸發。

webNavigation.onCompleted

當文件(包括它引用的資源)完全載入並初始化時觸發。這等同於 DOM 的 load 事件。

webNavigation.onErrorOccurred

發生錯誤且導航被中止時觸發。這可能發生在網路錯誤發生時,或使用者中止導航時。

webNavigation.onCreatedNavigationTarget

當建立新視窗或現有視窗中的新標籤頁來託管導航時觸發:例如,如果使用者在新標籤頁中開啟連結。

webNavigation.onReferenceFragmentUpdated

如果頁面的 片段識別符號發生更改,則觸發。

webNavigation.onTabReplaced

當標籤頁的內容被另一個(通常是之前預渲染的)標籤頁替換時觸發。

webNavigation.onHistoryStateUpdated

當頁面使用 History API 更新瀏覽器位址列中顯示的 URL 時觸發。

擴充套件程式示例

瀏覽器相容性

注意: 此 API 基於 Chromium 的 chrome.webNavigation API。此文件源自 Chromium 程式碼中的 web_navigation.json