webNavigation.getAllFrames()
给定一个标签 ID,检索有关其包含的所有框架的信息。
这是一个异步函数,它返回一个 Promise
。
语法
js
let gettingFrames = browser.webNavigation.getAllFrames(
details // object
)
参数
返回值
一个 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
。