webNavigation.onCommitted

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

語法

js
browser.webNavigation.onCommitted.addListener(
  listener,                 // function
  filter                    // optional object
)
browser.webNavigation.onCommitted.removeListener(listener)
browser.webNavigation.onCommitted.hasListener(listener)

事件有三個函式

addListener(listener)

向此事件新增監聽器。

removeListener(listener)

停止監聽此事件。listener 引數是要移除的監聽器。

hasListener(listener)

檢查 listener 是否已為此事件註冊。如果正在監聽,則返回 true,否則返回 false

addListener 語法

引數

監聽器

當此事件發生時呼叫的函式。該函式將傳遞此引數

details

object。有關導航事件的詳細資訊。有關更多資訊,請參閱詳細資訊部分。

filter 可選

object。一個包含單個屬性url的物件,該屬性是一個Array,其中包含events.UrlFilter物件。如果您包含此引數,則僅在導航到至少一個與陣列中的UrlFilter匹配的URL時才會觸發該事件。如果省略此引數,則在所有導航時都會觸發該事件。

額外物件

details

documentId

string。已載入文件的UUID。

parentDocumentId

string。擁有該框架的父文件的UUID。如果沒有父級,則不設定。

documentLifecycle

string。文件所處的生命週期。返回值包括"prerender""active""cached""pending_deletion"

tabId

integer。導航即將發生的選項卡ID。

url

string。給定框架將導航到的URL。

processId 可選 已棄用

integer。此值在現代瀏覽器中未設定。當設定時,它代表執行此選項卡渲染器的程序ID。

frameId

integer。導航將發生的框架。0表示導航發生在選項卡的主瀏覽上下文,而不是巢狀的<iframe>中。正值表示導航發生在巢狀的iframe中。對於給定的選項卡和程序,框架ID是唯一的。

parentFrameId

integer。此框架父級的ID。如果這是頂層框架,則設定為-1

frameType

string。導航發生的框架型別。返回值包括"outermost_frame""fenced_frame""sub_frame"

timeStamp

number。導航提交的時間,以紀元以來的毫秒數表示。

transitionType

transitionType。導航的原因。(例如,如果使用者點選了連結,則為"link";如果使用者重新載入了頁面,則為"reload"。)

transitionQualifiers

Array of transitionQualifier。有關導航的附加資訊:例如,是否存在伺服器端或客戶端重定向。

示例

記錄onCommitted的目標URL和附加的轉換資訊,如果目標URL的主機名包含"example.com"或以"developer"開頭。

js
const filter = {
  url: [{ hostContains: "example.com" }, { hostPrefix: "developer" }],
};

function logOnCommitted(details) {
  console.log(`target URL: ${details.url}`);
  console.log(`transition type: ${details.transitionType}`);
  console.log(`transition qualifiers: ${details.transitionQualifiers}`);
}

browser.webNavigation.onCommitted.addListener(logOnCommitted, filter);

擴充套件程式示例

瀏覽器相容性

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