action.setPopup()
设置在用户点击浏览器操作图标时打开的弹出窗口的 HTML 文档。没有特定弹出窗口的选项卡将继承全局弹出窗口,该窗口默认为清单中指定的 default_popup
。
注意:此 API 在清单 V3 或更高版本中可用。
语法
js
browser.action.setPopup(
details // object
)
参数
details
-
具有以下属性的对象
tabId
可选-
integer
。仅为特定选项卡设置弹出窗口。当用户将此选项卡导航到新页面时,弹出窗口将重置。 windowId
可选-
integer
。仅为指定的窗口设置弹出窗口。 popup
-
string
或null
。要在弹出窗口中显示的 HTML 文件,指定为 URL。这可以指向打包在扩展程序中的文件(例如,使用
extension.getURL
创建),或远程文档(例如https://example.org/
)。如果此处传递空字符串 (
""
),则禁用弹出窗口,并且扩展程序将接收action.onClicked
事件。如果
popup
为null
- 如果指定了
tabId
,则删除特定于选项卡的弹出窗口,以便选项卡继承全局弹出窗口。 - 如果指定了
windowId
,则删除特定于窗口的弹出窗口,以便窗口继承全局弹出窗口。 - 如果同时省略了
tabId
和windowId
,则将全局弹出窗口恢复为默认值。
- 如果指定了
- 如果同时提供了
windowId
和tabId
,则函数失败并且不会设置弹出窗口。 - 如果同时省略了
windowId
和tabId
,则设置全局弹出窗口。
示例
此代码添加了一对上下文菜单项,您可以使用它们在两个弹出窗口之间切换。请注意,您需要在扩展的清单中设置“contextMenus” 权限 才能创建上下文菜单项。
js
function onCreated() {
if (browser.runtime.lastError) {
console.log("error creating item:", browser.runtime.lastError);
} else {
console.log("item created successfully");
}
}
browser.contextMenus.create(
{
id: "popup-1",
type: "radio",
title: "Popup 1",
contexts: ["all"],
checked: true,
},
onCreated,
);
browser.contextMenus.create(
{
id: "popup-2",
type: "radio",
title: "Popup 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" });
}
});
浏览器兼容性
BCD 表仅在启用 JavaScript 的浏览器中加载。
注意:此 API 基于 Chromium 的 chrome.action
API。此文档源自 Chromium 代码中的 browser_action.json
。