runtime.getBackgroundPage()
检索当前扩展程序内部运行的后台页面的 Window
对象。如果后台页面是非持久性的(事件页面)并且未运行,则会启动后台页面。
这为其他特权扩展脚本提供了一种方便的方法,以便直接访问后台脚本的作用域。这使它们能够访问在该作用域中定义的变量或调用函数。“特权脚本”此处包括在 选项页面 中运行的脚本,或在 浏览器操作 或 页面操作 弹出窗口中运行的脚本,但不包括 内容脚本。
请注意,使用 const
或 let
声明的变量不会出现在此函数返回的 Window
对象中。
另请注意,此方法无法在 Firefox 的私有窗口中使用 - 它始终返回 null
。有关更多信息,请参阅 bugzilla 上的相关错误。
如果后台页面是事件页面,则系统将在解析 Promise 之前确保其已加载。
这是一个返回 Promise
的异步函数。
注意:在 Firefox 中,此方法无法在隐私浏览模式下使用 - 它始终返回 null
。有关更多信息,请参阅 Firefox 错误 1329304。
在 Chrome 中,此方法仅适用于持久性后台页面,而持久性后台页面在清单文件 V3 中不可用,因此请考虑使用清单文件 V2。有关详细信息,请参阅 此处。
请考虑使用 runtime.sendMessage()
或 runtime.connect()
,它们在上述两种情况下都能正常工作。
语法
js
let gettingPage = browser.runtime.getBackgroundPage()
参数
无。
返回值
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。
示例
假设一个 后台脚本 定义了一个函数 foo()
js
// background.js
function foo() {
console.log("I'm defined in background.js");
}
在 弹出窗口 中运行的脚本可以像这样直接调用此函数
js
// popup.js
function onGot(page) {
page.foo();
}
function onError(error) {
console.log(`Error: ${error}`);
}
let getting = browser.runtime.getBackgroundPage();
getting.then(onGot, onError);
注意:此 API 基于 Chromium 的 chrome.runtime
API。此文档源自 Chromium 代码中的 runtime.json
。