webNavigation.onCreatedNavigationTarget

當建立新視窗或現有視窗的新標籤頁來承載導航目標時觸發。例如,當以下情況發生時會發送此事件:

  • 使用者在新標籤頁或視窗中開啟連結
  • 網頁使用 window.open() 在新標籤頁或視窗中載入資源(但請注意,如果瀏覽器的彈出視窗阻止程式阻止了載入,則不會發送此事件)。

如果標籤頁或視窗是在沒有導航目標的情況下建立的(例如,使用者透過按 Ctrl+T 開啟新標籤頁),則不會發送此事件。

如果此事件被觸發,它將在 webNavigation.onBeforeNavigate 之前觸發。

語法

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

事件有三個函式

addListener(listener)

向此事件新增監聽器。

removeListener(listener)

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

hasListener(listener)

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

addListener 語法

引數

監聽器

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

details

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

filter 可選

object。一個包含單個屬性 url 的物件,該屬性是 Array,其中包含 events.UrlFilter 物件。如果包含此引數,則事件僅針對匹配陣列中至少一個 UrlFilter 的過渡觸發。如果省略此引數,則事件針對所有過渡觸發。請注意,filter 在 Firefox 中不受支援。

額外物件

details

sourceFrameId

integer。發起導航的框架的 ID。0 表示該框架是標籤頁的頂級瀏覽上下文,而不是巢狀的 <iframe>。正值表示導航是從巢狀 iframe 發起的。對於給定的標籤頁和程序,框架 ID 是唯一的。

processId 可選 已棄用

integer。此值在現代瀏覽器中未設定。當它被設定時,它代表導航起源程序的 ID。

sourceTabId

integer。發起導航的標籤頁的 ID。例如,如果使用者在新標籤頁中開啟連結,這將是包含該連結的標籤頁的 ID。

tabId

integer。新建立標籤頁的 ID。

timeStamp

number。瀏覽器建立導航目標的時間,以自紀元以來的 毫秒為單位。

url

string。將在新標籤頁中載入的 URL。

windowId

number。建立新標籤頁的視窗的 ID。

示例

如果目標的主機名包含“example.com”或以“developer”開頭,則記錄 onCreatedNavigationTarget 的目標 URL、源標籤頁 ID 和源框架 ID。

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

function logOnCreatedNavigationTarget(details) {
  console.log(`onCreatedNavigationTarget: ${details.url}`);
  console.log(details.sourceTabId);
  console.log(details.sourceFrameId);
}

browser.webNavigation.onCreatedNavigationTarget.addListener(
  logOnCreatedNavigationTarget,
  filter,
);

瀏覽器相容性

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