chrome.contextMenus

說明

使用 chrome.contextMenus API 將項目新增至 Google Chrome 的內容選單。您可以選擇內容選單增補項目適用的物件類型,例如圖片、超連結和網頁。

權限

contextMenus

如要使用 API,必須在擴充功能的資訊清單中聲明 "contextMenus" 權限。此外,您應指定 16 x 16 像素的圖示,顯示在選單項目旁。例如:

{
  "name": "My extension",
  ...
  "permissions": [
    "contextMenus"
  ],
  "icons": {
    "16": "icon-bitty.png",
    "48": "icon-small.png",
    "128": "icon-large.png"
  },
  ...
}

概念與用途

即使是使用 file:// 或 chrome:// 網址的文件 (或文件中的影格),也可能會顯示內容選單項目。如要控管項目可顯示的文件,請在呼叫 create()update() 方法時指定 documentUrlPatterns 欄位。

您可以視需要建立任意數量的內容選單項目,但如果擴充功能有多個項目同時顯示,Google Chrome 會自動將這些項目摺疊成單一父項選單。

範例

如要試用這項 API,請從 chrome-extension-samples 存放區安裝 contextMenus API 範例

類型

ContextType

Chrome 44 以上版本

選單可顯示的不同情境。指定「all」等同於除了「launcher」以外的所有其他情境組合。「啟動器」環境僅支援應用程式,用於在啟動器/工作列/Dock 等位置點選應用程式圖示時,將選單項目新增至顯示的內容選單。不同平台可能會限制啟動器內容選單實際支援的項目。

列舉

「all」

「page」

「frame」

「selection」

「link」

「editable」

「image」

「video」

「audio」

「launcher」

「browser_action」

「page_action」

「action」

CreateProperties

Chrome 123 以上版本

新內容選單項目的屬性。

屬性

  • 已勾選

    布林值 選填

    核取方塊或圓形按鈕的初始狀態:true 代表已選取,false 代表未選取。在特定群組中,一次只能選取一個圓形按鈕。

  • 情境

    [ContextType, ...ContextType[]] optional

    這個選單項目會顯示的內容清單。預設值為 ['page']

  • documentUrlPatterns

    字串陣列 選用

    限制項目,只適用於網址符合指定模式的文件或框架。如要瞭解模式格式的詳細資料,請參閱「比對模式」。

  • 已啟用

    布林值 選填

    這個內容選單項目是否已啟用或停用。預設值為 true

  • id

    字串 選填

    指派給這個項目的專屬 ID。活動頁面必須提供這項資訊。不得與這個擴充功能的其他 ID 相同。

  • parentId

    字串 | 數字 選用

    父項選單項目的 ID,這會使項目成為先前新增項目的子項。

  • targetUrlPatterns

    字串陣列 選用

    documentUrlPatterns 類似,篩選器會根據 imgaudiovideo 標記的 src 屬性,以及 a 標記的 href 屬性進行篩選。

  • title

    字串 選填

    要在項目中顯示的文字;除非 typeseparator,否則必須提供這項資訊。如果內容為 selection,請在字串中使用 %s 顯示所選文字。舉例來說,如果這個參數的值是「將 '%s' 翻譯成拉丁豬文」,且使用者選取「酷」這個字,選取範圍的內容選單項目就會是「將 '酷' 翻譯成拉丁豬文」。

  • 類型

    ItemType optional

    選單項目的類型。預設值為 normal

  • 顯示

    布林值 選填

    項目是否顯示在選單中。

  • onclick

    void optional

    點選選單項目時呼叫的回呼函式。這項功能無法在 Service Worker 中使用,請改為註冊 contextMenus.onClicked 的監聽器。

    onclick 函式如下所示:

    (info: OnClickData, tab: Tab) => {...}

    • 資訊

      使用者點選的項目,以及點選時的背景資訊。

    • 分頁

      Tab

      發生點擊的分頁詳細資料。平台應用程式沒有這個參數。

ItemType

Chrome 44 以上版本

選單項目的類型。

列舉

「normal」

「checkbox」

「radio」

「separator」

OnClickData

點選內容選單項目時傳送的資訊。

屬性

  • 已勾選

    布林值 選填

    點選核取方塊或圓形按鈕項目後,表示其狀態的旗標。

  • 可編輯

    布林值

    這個標記表示元素是否可編輯 (文字輸入、文字區域等)。

  • frameId

    號碼 選填

    Chrome 51 以上版本

    如果內容選單是在影格中點選,則為該影格的 ID

  • frameUrl

    字串 選填

    如果內容選單是在影格中點選,這個元素影格的網址。

  • linkUrl

    字串 選填

    如果元素是連結,則為連結指向的網址。

  • mediaType

    字串 選填

    如果是在這類元素上啟動內容選單,則為「image」、「video」或「audio」。

  • menuItemId

    字串 | 數字

    獲得點擊的菜單項目 ID。

  • pageUrl

    字串 選填

    使用者點選選單項目的網頁網址。如果點擊發生在沒有目前網頁的環境中 (例如啟動器環境選單),系統就不會設定這項屬性。

  • parentMenuItemId

    字串 | 數字 選用

    獲得點擊項目的父項 ID (如有)。

  • selectionText

    字串 選填

    內容選取範圍的文字 (如有)。

  • srcUrl

    字串 選填

    如果元素有「src」網址,就會顯示這個屬性。

  • wasChecked

    布林值 選填

    此標記用於指出核取方塊或選項按鈕在點選前的狀態。

屬性

ACTION_MENU_TOP_LEVEL_LIMIT

可新增至擴充功能動作右鍵選單的頂層擴充功能項目數量上限。系統會忽略超出這項限制的所有項目。

6

方法

create()

chrome.contextMenus.create(
  createProperties: CreateProperties,
  callback?: function,
)
: number | string

建立新的內容選單項目。如果在建立期間發生錯誤,可能要等到建立回呼觸發後才會偵測到,詳細資料會顯示在 runtime.lastError 中。

參數

  • createProperties
  • callback

    函式 選用

    callback 參數如下:

    () => void

傳回

  • 數字 | 字串

    新建立項目的 ID。

remove()

chrome.contextMenus.remove(
  menuItemId: string | number,
)
: Promise<void>

移除內容選單項目。

參數

  • menuItemId

    字串 | 數字

    要移除的內容選單項目 ID。

傳回

  • Promise<void>

    Chrome 123 以上版本

removeAll()

chrome.contextMenus.removeAll(): Promise<void>

移除這個擴充功能新增的所有內容選單項目。

傳回

  • Promise<void>

    Chrome 123 以上版本

update()

chrome.contextMenus.update(
  id: string | number,
  updateProperties: object,
)
: Promise<void>

更新先前建立的內容選單項目。

參數

  • id

    字串 | 數字

    要更新的項目 ID。

  • updateProperties

    物件

    要更新的屬性。接受與 contextMenus.create 函式相同的值。

    • 已勾選

      布林值 選填

    • 情境

      [ContextType, ...ContextType[]] optional

    • documentUrlPatterns

      字串陣列 選用

    • 已啟用

      布林值 選填

    • parentId

      字串 | 數字 選用

      要設為這個項目父項的項目 ID。注意:您無法將項目設為自身後代的子項。

    • targetUrlPatterns

      字串陣列 選用

    • title

      字串 選填

    • 類型

      ItemType optional

    • 顯示

      布林值 選填

      Chrome 62 以上版本

      項目是否顯示在選單中。

    • onclick

      void optional

      onclick 函式如下所示:

      (info: OnClickData, tab: Tab) => {...}

      • 資訊
        Chrome 44 以上版本
      • 分頁

        Tab

        Chrome 44 以上版本

        發生點擊的分頁詳細資料。平台應用程式沒有這個參數。

傳回

  • Promise<void>

    Chrome 123 以上版本

事件

onClicked

chrome.contextMenus.onClicked.addListener(
  callback: function,
)

點選內容選單項目時觸發。

參數