From 0f90ae31147d78b878829e41fa9f576d0c8c7b52 Mon Sep 17 00:00:00 2001 From: Hoarfroster Date: Mon, 2 Dec 2024 13:10:21 +0800 Subject: [PATCH 01/10] feat: update translation --- .../api/sidebaraction/setpanel/index.md | 116 ++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 files/zh-cn/mozilla/add-ons/webextensions/api/sidebaraction/setpanel/index.md diff --git a/files/zh-cn/mozilla/add-ons/webextensions/api/sidebaraction/setpanel/index.md b/files/zh-cn/mozilla/add-ons/webextensions/api/sidebaraction/setpanel/index.md new file mode 100644 index 00000000000000..38af1c02d3166f --- /dev/null +++ b/files/zh-cn/mozilla/add-ons/webextensions/api/sidebaraction/setpanel/index.md @@ -0,0 +1,116 @@ +--- +title: sidebarAction.setPanel() +slug: Mozilla/Add-ons/WebExtensions/API/sidebarAction/setPanel +l10n: + sourceCommit: b8a0743ca8b1e1b1b1a95cc93a4413c020f11262 +--- + +{{AddonSidebar}} + +设置侧边栏的面板:即定义此侧边栏内容的 HTML 文档。 + +## 面板类型 + +侧边栏总是有一个“清单面板”,即在 [`sidebar_action`](/zh-CN/docs/Mozilla/Add-ons/WebExtensions/manifest.json/sidebar_action) 清单键中定义的面板。 + +如果使用 `setPanel()` 设置新面板,并包含 `tabId` 选项,则该面板仅为给定的标签页设置。这个面板称为“标签特定面板”。 + +如果使用 `setPanel()` 设置新面板,并包含 `windowId` 选项,则该面板仅为给定的窗口设置。这个面板称为“窗口特定面板”,并将出现在该窗口的所有没有设置标签特定面板的标签中。 + +如果使用 `setPanel()` 设置新面板,并省略 `tabId` 和 `windowId` 选项,则这将设置“全局面板”。全局面板将出现在所有没有设置标签特定面板的标签中,且其窗口没有设置窗口特定面板的标签中。 + +## 语法 + +```js-nolint +browser.sidebarAction.setPanel( + details // 对象 +) +``` + +### 参数 + +- `details` + + - : `object`,包含如下属性的对象: + + - `panel` + + - : `string` 或 `null`:要加载到侧边栏中的面板,指定为指向 HTML 文档的 URL,或 `null`,或空字符串。 + + 这可以指向扩展内部打包的文件(例如使用 {{WebExtAPIRef("runtime.getURL")}} 创建的文件)或远程文档(例如 `https://example.org/`)。它必须是有效的 URL。 + + 如果 `panel` 是 `null` 或 `""`,则将删除先前设置的面板,以便: + + - 如果指定了 `tabId`,并且标签页设置了标签页特定面板,则标签页将从其所属窗口继承面板。 + - 如果指定了 `windowId`,并且窗口设置了窗口特定面板,则窗口将继承全局面板。 + - 否则,全局面板将重置为清单面板。 + + - `tabId` {{optional_inline}} + - : `integer`。仅为指定的标签页设置面板。 + - `windowId` {{optional_inline}} + - : `integer`。仅为指定的窗口设置面板。 + + + +- 如果同时提供了 `windowId` 和 `tabId`,函数将失败且面板不会被设置。 +- 如果同时省略 `windowId` 和 `tabId`,则设置全局面板。 + +## 示例 + +This code toggles the sidebar document when the user clicks a browser action: + +```js +let thisPanel = browser.runtime.getURL("/this.html"); +let thatPanel = browser.runtime.getURL("/that.html"); + +function toggle(panel) { + if (panel === thisPanel) { + browser.sidebarAction.setPanel({ panel: thatPanel }); + } else { + browser.sidebarAction.setPanel({ panel: thisPanel }); + } +} + +browser.browserAction.onClicked.addListener(() => { + browser.sidebarAction.getPanel({}).then(toggle); +}); +``` + +{{WebExtExamples}} + +## 浏览器兼容性 + +{{Compat}} + +> [!NOTE] +> 此 API 是基于 Opera 的 [`chrome.sidebarAction`](https://help.opera.com/en/extensions/sidebar-action-api/) API. + + From 38d0f03d74d9287d6e1e3e6bd7a7b524c92cd124 Mon Sep 17 00:00:00 2001 From: Hoarfroster Date: Mon, 2 Dec 2024 20:11:51 +0800 Subject: [PATCH 02/10] Update index.md --- .../webextensions/api/sidebaraction/setpanel/index.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/files/zh-cn/mozilla/add-ons/webextensions/api/sidebaraction/setpanel/index.md b/files/zh-cn/mozilla/add-ons/webextensions/api/sidebaraction/setpanel/index.md index 38af1c02d3166f..a46773254bf8ea 100644 --- a/files/zh-cn/mozilla/add-ons/webextensions/api/sidebaraction/setpanel/index.md +++ b/files/zh-cn/mozilla/add-ons/webextensions/api/sidebaraction/setpanel/index.md @@ -11,13 +11,13 @@ l10n: ## 面板类型 -侧边栏总是有一个“清单面板”,即在 [`sidebar_action`](/zh-CN/docs/Mozilla/Add-ons/WebExtensions/manifest.json/sidebar_action) 清单键中定义的面板。 +侧边栏总是有一个“_清单面板_”,即在 [`sidebar_action`](/zh-CN/docs/Mozilla/Add-ons/WebExtensions/manifest.json/sidebar_action) 清单键中定义的面板。 -如果使用 `setPanel()` 设置新面板,并包含 `tabId` 选项,则该面板仅为给定的标签页设置。这个面板称为“标签特定面板”。 +如果使用 `setPanel()` 设置新面板,并包含 `tabId` 选项,则该面板仅为给定的标签页设置。这个面板称为“_标签特定面板_”。 -如果使用 `setPanel()` 设置新面板,并包含 `windowId` 选项,则该面板仅为给定的窗口设置。这个面板称为“窗口特定面板”,并将出现在该窗口的所有没有设置标签特定面板的标签中。 +如果使用 `setPanel()` 设置新面板,并包含 `windowId` 选项,则该面板仅为给定的窗口设置。这个面板称为“_窗口特定面板_”,并将出现在该窗口的所有没有设置标签特定面板的标签中。 -如果使用 `setPanel()` 设置新面板,并省略 `tabId` 和 `windowId` 选项,则这将设置“全局面板”。全局面板将出现在所有没有设置标签特定面板的标签中,且其窗口没有设置窗口特定面板的标签中。 +如果使用 `setPanel()` 设置新面板,并省略 `tabId` 和 `windowId` 选项,则这将设置“_全局面板_”。全局面板将出现在所有没有设置标签特定面板的标签中,且其窗口没有设置窗口特定面板的标签中。 ## 语法 From c3134378288a0d1e24afaffaccf42c6f13b8fb27 Mon Sep 17 00:00:00 2001 From: Hoarfroster Date: Wed, 4 Dec 2024 19:51:03 +0800 Subject: [PATCH 03/10] Update files/zh-cn/mozilla/add-ons/webextensions/api/sidebaraction/setpanel/index.md Co-authored-by: A1lo --- .../add-ons/webextensions/api/sidebaraction/setpanel/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/files/zh-cn/mozilla/add-ons/webextensions/api/sidebaraction/setpanel/index.md b/files/zh-cn/mozilla/add-ons/webextensions/api/sidebaraction/setpanel/index.md index a46773254bf8ea..5d4244ee623289 100644 --- a/files/zh-cn/mozilla/add-ons/webextensions/api/sidebaraction/setpanel/index.md +++ b/files/zh-cn/mozilla/add-ons/webextensions/api/sidebaraction/setpanel/index.md @@ -83,7 +83,7 @@ browser.browserAction.onClicked.addListener(() => { {{Compat}} > [!NOTE] -> 此 API 是基于 Opera 的 [`chrome.sidebarAction`](https://help.opera.com/en/extensions/sidebar-action-api/) API. +> 此 API 基于 Opera 的 [`chrome.sidebarAction`](https://help.opera.com/en/extensions/sidebar-action-api/) API。