説明
chrome.contextMenus API を使用して、Google Chrome のコンテキスト メニューに項目を追加します。コンテキスト メニューに追加するオブジェクトのタイプ(画像、ハイパーリンク、ページなど)を選択できます。
権限
contextMenusAPI を使用するには、拡張機能のマニフェストで "contextMenus" 権限を宣言する必要があります。また、メニュー項目の横に表示する 16×16 ピクセルのアイコンを指定する必要があります。次に例を示します。
{
  "name": "My extension",
  ...
  "permissions": [
    "contextMenus"
  ],
  "icons": {
    "16": "icon-bitty.png",
    "48": "icon-small.png",
    "128": "icon-large.png"
  },
  ...
}
コンセプトと使用方法
コンテキスト メニュー項目は、file:// や chrome:// URL を含むドキュメントを含め、あらゆるドキュメント(またはドキュメント内のフレーム)に表示できます。項目を表示できるドキュメントを制御するには、create() メソッドまたは update() メソッドを呼び出すときに documentUrlPatterns フィールドを指定します。
コンテキスト メニュー項目は必要なだけ作成できますが、拡張機能の項目が複数同時に表示される場合は、Google Chrome によって自動的に 1 つの親メニューに折りたたまれます。
例
この API を試すには、chrome-extension-samples リポジトリから contextMenus API のサンプルをインストールします。
型
ContextType
メニューが表示されるさまざまなコンテキスト。「all」を指定することは、「launcher」以外のすべてのコンテキストの組み合わせと同じです。「ランチャー」コンテキストはアプリでのみサポートされており、ランチャー / タスクバー / ドックなどでアプリ アイコンをクリックしたときに表示されるコンテキスト メニューにメニュー項目を追加するために使用されます。プラットフォームによっては、ランチャー コンテキスト メニューで実際にサポートされるものに制限が課される場合があります。
列挙型
"all" 
 
"page" 
 
"frame" 
 
"selection" 
 
"link" 
 
"editable" 
 
"image" 
 
"video" 
 
"audio" 
 
"launcher" 
 
"browser_action" 
 
"page_action" 
 
"action" 
 
CreateProperties
新しいコンテキスト メニュー項目のプロパティ。
プロパティ
- 
    ONブール値(省略可) チェックボックスまたはラジオボタンの初期状態。選択されている場合は true、選択されていない場合はfalse。特定のグループで一度に選択できるラジオボタンは 1 つだけです。
- 
    コンテキスト[ContextType, ...ContextType[]] 省略可 このメニュー項目が表示されるコンテキストのリスト。デフォルトは ['page']です。
- 
    documentUrlPatternsstring[] 省略可 URL が指定されたパターンのいずれかに一致するドキュメントまたはフレームにのみ適用されるようにアイテムを制限します。パターン形式の詳細については、一致パターンをご覧ください。 
- 
    有効ブール値(省略可) このコンテキスト メニュー項目が有効か無効か。デフォルトは trueです。
- 
    id文字列 省略可 このアイテムに割り当てる一意の ID。イベントページで必須です。この拡張機能の別の ID と同じにすることはできません。 
- 
    parentId文字列 | 数値 省略可 親メニュー項目の ID。これにより、項目が以前に追加された項目の子になります。 
- 
    targetUrlPatternsstring[] 省略可 documentUrlPatternsと同様に、img、audio、videoタグのsrc属性とaタグのhref属性に基づいてフィルタします。
- 
    title文字列 省略可 項目に表示するテキスト。 typeがseparatorでない限り、必須です。コンテキストがselectionの場合は、文字列内で%sを使用して、選択したテキストを表示します。たとえば、このパラメータの値が「Translate '%s' to Pig Latin」で、ユーザーが「cool」という単語を選択した場合、選択項目のコンテキスト メニュー項目は「Translate 'cool' to Pig Latin」になります。
- 
    typeItemType 省略可 メニュー項目のタイプ。デフォルトは normalです。
- 
    表示ブール値(省略可) メニューに項目が表示されるかどうか。 
- 
    onclickvoid optional メニュー項目がクリックされたときに呼び出される関数。これは Service Worker 内では使用できません。代わりに、 contextMenus.onClickedのリスナーを登録する必要があります。onclick関数は次のようになります。(info: OnClickData, tab: Tab) => {...} - 
    情報クリックされたアイテムとクリックが発生したコンテキストに関する情報。 
- 
    タブクリックが発生したタブの詳細。このパラメータはプラットフォーム アプリには存在しません。 
 
- 
    
ItemType
メニュー項目のタイプ。
列挙型
"normal" 
 
"checkbox" 
 
"radio" 
 
"separator" 
 
OnClickData
コンテキスト メニュー項目がクリックされたときに送信される情報。
プロパティ
- 
    ONブール値(省略可) クリック後のチェックボックスまたはラジオ項目の状態を示すフラグ。 
- 
    編集可能ブール値 要素が編集可能かどうか(テキスト入力、テキストエリアなど)を示すフラグ。 
- 
    frameIdnumber 省略可 Chrome 51 以降コンテキスト メニューがクリックされた要素のフレームの ID(フレーム内にある場合)。 
- 
    frameUrl文字列 省略可 コンテキスト メニューがクリックされた要素のフレームの URL(フレーム内にあった場合)。 
- 
    linkUrl文字列 省略可 要素がリンクの場合、リンク先の URL。 
- 
    mediaType文字列 省略可 コンテキスト メニューがこれらのタイプの要素のいずれかで有効になった場合は、「image」、「video」、「audio」のいずれか。 
- 
    string | number クリックされたメニュー項目の ID。 
- 
    pageUrl文字列 省略可 メニュー項目がクリックされたページの URL。ランチャーのコンテキスト メニューなど、現在のページが存在しないコンテキストでクリックが発生した場合、このプロパティは設定されません。 
- 
    parentMenuItemId文字列 | 数値 省略可 クリックされたアイテムの親 ID(存在する場合)。 
- 
    selectionText文字列 省略可 コンテキスト選択のテキスト(ある場合)。 
- 
    srcUrl文字列 省略可 「src」URL を含む要素に存在します。 
- 
    wasCheckedブール値(省略可) クリック前のチェックボックスまたはラジオ項目の状態を示すフラグ。 
プロパティ
ACTION_MENU_TOP_LEVEL_LIMIT
拡張機能アクションのコンテキスト メニューに追加できる最上位の拡張機能アイテムの最大数。この上限を超えるアイテムは無視されます。
値
6 
 
メソッド
create()
chrome.contextMenus.create(
createProperties: CreateProperties,
callback?: function,
): number | string
新しいコンテキスト メニュー項目を作成します。作成中にエラーが発生した場合、作成コールバックが起動するまで検出されないことがあります。詳細は runtime.lastError をご覧ください。
パラメータ
- 
    createProperties
- 
    callback関数 省略可 callbackパラメータは次のようになります。() => void 
戻り値
- 
            number | string 新しく作成されたアイテムの ID。 
remove()
chrome.contextMenus.remove(
menuItemId: string | number,
): Promise<void>
コンテキスト メニュー項目を削除します。
パラメータ
- 
    string | number 削除するコンテキスト メニュー項目の 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>
以前に作成されたコンテキスト メニュー項目を更新します。
パラメータ
- 
    idstring | number 更新するアイテムの ID。 
- 
    updatePropertiesオブジェクト 更新するプロパティ。 contextMenus.create関数と同じ値を受け入れます。- 
    ONブール値(省略可) 
- 
    コンテキスト[ContextType, ...ContextType[]] 省略可 
- 
    documentUrlPatternsstring[] 省略可 
- 
    有効ブール値(省略可) 
- 
    parentId文字列 | 数値 省略可 このアイテムの親にするアイテムの ID。注: アイテムをその子孫の子に設定することはできません。 
- 
    targetUrlPatternsstring[] 省略可 
- 
    title文字列 省略可 
- 
    typeItemType 省略可 
- 
    表示ブール値(省略可) Chrome 62 以降メニューに項目が表示されるかどうか。 
- 
    onclickvoid optional onclick関数は次のようになります。(info: OnClickData, tab: Tab) => {...} - 
    情報Chrome 44 以降
- 
    タブChrome 44 以降クリックが発生したタブの詳細。このパラメータはプラットフォーム アプリには存在しません。 
 
- 
    
 
- 
    
戻り値
- 
            Promise<void> Chrome 123 以降
イベント
onClicked
chrome.contextMenus.onClicked.addListener(
callback: function,
)
コンテキスト メニュー項目がクリックされたときに呼び出されます。
パラメータ
- 
    callback関数 callbackパラメータは次のようになります。(info: OnClickData, tab?: tabs.Tab) => void - 
    情報
- 
    タブtabs.Tab 省略可 
 
-