From ae9feb68b71cf0f2b6bdf1eb1f930bfaaeab75e6 Mon Sep 17 00:00:00 2001 From: Hoarfroster Date: Wed, 7 Aug 2024 04:59:40 +0000 Subject: [PATCH 1/3] feat: update translation --- .../api/action/setpopup/index.md | 133 ++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100644 files/zh-cn/mozilla/add-ons/webextensions/api/action/setpopup/index.md diff --git a/files/zh-cn/mozilla/add-ons/webextensions/api/action/setpopup/index.md b/files/zh-cn/mozilla/add-ons/webextensions/api/action/setpopup/index.md new file mode 100644 index 00000000000000..6607688ae7fc60 --- /dev/null +++ b/files/zh-cn/mozilla/add-ons/webextensions/api/action/setpopup/index.md @@ -0,0 +1,133 @@ +--- +title: action.setPopup() +slug: Mozilla/Add-ons/WebExtensions/API/action/setPopup +l10n: + sourceCommit: b30a10c08b986ebabd44733fb62f67667350403e +--- + +{{AddonSidebar}} + +指定用户单击浏览器操作图标时打开的 HTML 文档。没有特定弹窗的标签页将继承全局弹窗,其默认值为清单中指定的 [`default_popup`](/zh-CN/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_action)。 + +> [!NOTE] +> 该 API 在 Manifest V3 或更高版本中可用。 + +## 语法 + +```js-nolint +browser.action.setPopup( + details // object +) +``` + +### 参数 + +- `details` + + - : 一个含有下列属性的对象: + + - `tabId` {{optional_inline}} + - : `integer`,指定要设置图标的标签页。当用户导航到新页面时,弹窗会被重置。 + - `windowId` {{optional_inline}} + - : `integer`,指定要设置图标的窗口。 + - `popup` + + - : `string` 或 `null`,指定作为弹窗的 HTML 文件的 URL。 + + 这可以指向打包在扩展中的文件(例如使用 {{WebExtAPIRef("extension.getURL")}} 创建的文件),或远程文档(例如 `https://example.org/`)。 + + 若传入空字符串(`""`),则禁用弹窗,扩展将接收 {{WebExtAPIRef("action.onClicked")}} 事件。 + + 若 `popup` 为 `null`: + + - 若指定了 `tabId`,则移除标签页特定的弹窗,使标签页继承其所属窗口的弹窗。 + - 若指定了 `windowId`,则移除窗口特定的弹窗,使窗口继承全局弹窗。 + - 若 `tabId` 和 `windowId` 都被省略,则将全局弹窗恢复为默认值。 + + + +- 若同时指定了 `windowId` 和 `tabId`,则函数出错且不会设置弹窗。 +- 若同时未指定 `windowId` 和 `tabId`,则将设置全局弹窗。 + +## 示例 + +这段代码添加了一对上下文菜单项,用于在两个弹窗之间切换。请注意,你需要在扩展的清单中设置“contextMenus”[权限](/zh-CN/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions)来创建上下文菜单项。 + +```js +function onCreated() { + if (browser.runtime.lastError) { + console.log("创建菜单项时出错:", browser.runtime.lastError); + } else { + console.log("上下文菜单项已创建"); + } +} + +browser.contextMenus.create( + { + id: "popup-1", + type: "radio", + title: "弹窗 1", + contexts: ["all"], + checked: true, + }, + onCreated, +); + +browser.contextMenus.create( + { + id: "popup-2", + type: "radio", + title: "弹窗 2", + contexts: ["all"], + checked: false, + }, + onCreated, +); + +browser.contextMenus.onClicked.addListener((info, tab) => { + if (info.menuItemId === "popup-1") { + browser.action.setPopup({ popup: "/popup/popup1.html" }); + } else if (info.menuItemId === "popup-2") { + browser.action.setPopup({ popup: "/popup/popup2.html" }); + } +}); +``` + +{{WebExtExamples}} + +## 浏览器兼容性 + +{{Compat}} + +> [!NOTE] +> 该 API 基于 Chromium 的 [`chrome.action`](https://developer.chrome.com/docs/extensions/reference/action/#method-setPopup) API。该文档衍生于 Chromium 代码中的 [`browser_action.json`](https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/browser_action.json)。 + + From 932e48d2fdbef2372c3a18c20be82631bfb7f455 Mon Sep 17 00:00:00 2001 From: Hoarfroster Date: Thu, 8 Aug 2024 17:37:27 +0800 Subject: [PATCH 2/3] Update files/zh-cn/mozilla/add-ons/webextensions/api/action/setpopup/index.md --- .../mozilla/add-ons/webextensions/api/action/setpopup/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/files/zh-cn/mozilla/add-ons/webextensions/api/action/setpopup/index.md b/files/zh-cn/mozilla/add-ons/webextensions/api/action/setpopup/index.md index 6607688ae7fc60..593bcef286b42a 100644 --- a/files/zh-cn/mozilla/add-ons/webextensions/api/action/setpopup/index.md +++ b/files/zh-cn/mozilla/add-ons/webextensions/api/action/setpopup/index.md @@ -100,7 +100,7 @@ browser.contextMenus.onClicked.addListener((info, tab) => { {{Compat}} > [!NOTE] -> 该 API 基于 Chromium 的 [`chrome.action`](https://developer.chrome.com/docs/extensions/reference/action/#method-setPopup) API。该文档衍生于 Chromium 代码中的 [`browser_action.json`](https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/browser_action.json)。 +> 该 API 基于 Chromium 的 [`chrome.action`](https://developer.chrome.com/docs/extensions/reference/action/#method-setPopup) API。本文衍生自 Chromium 代码中的 [`browser_action.json`](https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/browser_action.json)。