webNavigation.getAllFrames()

给定一个标签 ID,检索有关其包含的所有框架的信息。

这是一个异步函数,它返回一个 Promise

语法

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

参数

details

object. 要检索所有框架信息的相关标签。

tabId

integer. 标签的 ID。

返回值

一个 Promise,它将用一个对象数组来实现,每个对象都具有以下属性

errorOccurred

boolean. 如果此框架的最后一次导航因错误中断,则为真,即 onErrorOccurred 事件触发。

processId 可选 已弃用

integer. 此值在现代浏览器中未设置。当它被设置时,它表示运行此标签渲染器进程的 ID。

frameId

integer. 框架的 ID。如果是主框架,则 frameId 为零。

parentFrameId

integer. 此框架父级的 ID。如果不存在父框架,则为 -1:即,如果此框架是标签中的顶级浏览上下文。

url

string. 当前与此框架关联的 URL。

如果标签被丢弃,则 promise 将改为用 null 值来实现。如果找不到指定的标签,或者发生其他错误,则 promise 将用错误消息来拒绝。

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

示例

此代码在用户点击浏览器操作时记录活动标签中所有框架的 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