webNavigation.getAllFrames()

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

這是一個非同步函式,返回一個 Promise

語法

js
let gettingFrames = browser.webNavigation.getAllFrames(
  details                // object
)

引數

details

object. 要檢索其中所有 frame 的標籤頁的資訊。

tabId

integer. 標籤頁的 ID。

返回值

一個 Promise,它將解析為一個物件陣列,每個物件都包含以下屬性:

errorOccurred

boolean. 如果此 frame 中的最後一個導航被錯誤中斷,則為 true,即 onErrorOccurred 事件已觸發。

processId 可選 已棄用

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

frameId

integer. frame 的 ID。如果這是主 frame,則 frameId 為零。

parentFrameId

integer. 此 frame 的父級 ID。如果沒有父級 frame,則為 -1:即,如果此 frame 是標籤頁中的頂級瀏覽上下文。

url

string. 當前與此 frame 關聯的 URL。

如果標籤頁被丟棄,則 Promise 將解析為 null 值。如果找不到指定的標籤頁,或者發生其他錯誤,則 Promise 將以錯誤訊息被拒絕。

示例

這段程式碼會在使用者點選瀏覽器操作時,記錄活動標籤頁中所有 frame 的 URL。

js
function logFrameInfo(framesInfo) {
  for (const frameInfo of framesInfo) {
    console.log(frameInfo);
  }
}

function onError(error) {
  console.error(`Error: ${error}`);
}

function logAllFrames(tabs) {
  browser.webNavigation
    .getAllFrames({
      tabId: tabs[0].id,
    })
    .then(logFrameInfo, onError);
}

browser.browserAction.onClicked.addListener(() => {
  browser.tabs
    .query({
      currentWindow: true,
      active: true,
    })
    .then(logAllFrames, onError);
});

瀏覽器相容性

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