action.setPopup()
設定當用戶點選瀏覽器操作圖示時開啟的彈出視窗的 HTML 文件。沒有特定彈出視窗的標籤頁將繼承全域性彈出視窗,全域性彈出視窗預設為清單中的 default_popup。
注意:此 API 在 Manifest V3 或更高版本中可用。
語法
js
browser.action.setPopup(
details // object
)
引數
details-
具有以下屬性的物件:
tabId可選-
integer。僅為特定標籤頁設定彈出視窗。當用戶將此標籤頁導航到新頁面時,彈出視窗將重置。 windowId可選-
integer。僅為指定的視窗設定彈出視窗。 popup-
string或null。作為 URL 指定的在彈出視窗中顯示的 HTML 檔案。這可以指向打包在擴充套件中的檔案(例如,使用
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" });
}
});
瀏覽器相容性
載入中…
注意: 此 API 基於 Chromium 的 chrome.action API。本文件源自 Chromium 程式碼中的 browser_action.json。