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