action.setPopup()

設定當用戶點選瀏覽器操作圖示時開啟的彈出視窗的 HTML 文件。沒有特定彈出視窗的標籤頁將繼承全域性彈出視窗,全域性彈出視窗預設為清單中的 default_popup

注意:此 API 在 Manifest V3 或更高版本中可用。

語法

js
browser.action.setPopup(
  details // object
)

引數

details

具有以下屬性的物件:

tabId 可選

integer。僅為特定標籤頁設定彈出視窗。當用戶將此標籤頁導航到新頁面時,彈出視窗將重置。

windowId 可選

integer。僅為指定的視窗設定彈出視窗。

stringnull。作為 URL 指定的在彈出視窗中顯示的 HTML 檔案。

這可以指向打包在擴充套件中的檔案(例如,使用 extension.getURL 建立),或指向遠端文件(例如,https://example.org/)。

如果在此處傳遞空字串(""),則停用彈出視窗,擴充套件將收到 action.onClicked 事件。

如果 popupnull

  • 如果指定了 tabId,則刪除特定於標籤頁的彈出視窗,以便該標籤頁繼承全域性彈出視窗。
  • 如果指定了 windowId,則刪除特定於視窗的彈出視窗,以便該視窗繼承全域性彈出視窗。
  • 如果省略了 tabIdwindowId,則全域性彈出視窗將恢復到預設值。
  • 如果同時提供了 windowIdtabId,則函式失敗,彈出視窗未設定。
  • 如果同時省略了 windowIdtabId,則設定全域性彈出視窗。

示例

此程式碼添加了一對上下文選單項,您可以使用它們在兩個彈出視窗之間切換。請注意,您需要在擴充套件的清單中設定 "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