diff --git a/files/zh-cn/mozilla/add-ons/webextensions/api/extension/getviews/index.md b/files/zh-cn/mozilla/add-ons/webextensions/api/extension/getviews/index.md new file mode 100644 index 00000000000000..86b5d1422d15b6 --- /dev/null +++ b/files/zh-cn/mozilla/add-ons/webextensions/api/extension/getviews/index.md @@ -0,0 +1,103 @@ +--- +title: extension.getViews() +slug: Mozilla/Add-ons/WebExtensions/API/extension/getViews +l10n: + sourceCommit: b8a0743ca8b1e1b1b1a95cc93a4413c020f11262 +--- + +{{AddonSidebar}} + +返回当前扩展内运行的每个页面的 [Window](/zh-CN/docs/Web/API/Window) 对象数组。例如,这包括: + +- 后台页面(若定义了) +- 任何弹出页面(若定义并已加载) +- 任何选项页面(若定义并已加载) +- 任何托管了扩展打包内容的浏览器标签页 + +在 Firefox 中,如果从隐私浏览窗口的页面调用此方法,例如从隐私窗口中的侧边栏或从隐私窗口打开的弹出窗口,则其返回值将不包括扩展的后台页面。 + +## 语法 + +```js-nolint +let windows = browser.extension.getViews( + fetchProperties // 可选的对象 +) +``` + +### 参数 + +- `fetchProperties` {{optional_inline}} + + - : 包含如下属性的对象: + + - `type` {{optional_inline}} + - : `string`,指示要获取的视图类型的 {{WebExtAPIRef('extension.ViewType')}}。如果省略,此函数将返回所有视图。 + - `windowId` {{optional_inline}} + - : `integer`,要限制搜索范围的窗口。如果省略,此函数将返回所有视图。在 Firefox 版本 92 及更早版本中,侧边栏视图并不匹配,因此将不会被返回。 + +### 返回值 + +`object` 数组(`array`):[Window](/zh-CN/docs/Web/API/Window) 对象数组。 + +## 浏览器兼容性 + +{{Compat}} + +## 示例 + +获取属于此扩展的所有窗口,并记录它们的 URL: + +```js +const windows = browser.extension.getViews(); + +for (const extensionWindow of windows) { + console.log(extensionWindow.location.href); +} +``` + +仅获取托管了扩展打包内容的浏览器标签页中的窗口: + +```js +const windows = browser.extension.getViews({ type: "tab" }); +``` + +仅获取弹出页面中的窗口: + +```js +const windows = browser.extension.getViews({ type: "popup" }); +``` + +{{WebExtExamples}} + +> [!NOTE] +> 此 API 基于 Chromium 的 [`chrome.extension`](https://developer.chrome.com/docs/extensions/reference/api/extension/#method-getViews) API。该文档衍生自 Chromium 代码中的 [`extension.json`](https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/extension.json)。 + +