42
41

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Chrome 拡張機能 ー コンテキストメニュー(ContextType/ItemType)

Posted at

Chrome 拡張機能を作っているのだが、コンテキストメニューに追加するときのオプションがちょっとややこしかったのでメモがてらまとめておく。

コンテキストメニューというのは、右クリックしたときにでてくるやつです。
image.png

使い方

background.js 内で次のコードを書く。

title がメニューに表示される内容で、contextsContextType を指定する。
typeItemType を指定するだけ。

chrome.contextMenus.create({
    title: "コンテキストメニューを追加",
    contexts: ["all"],
    type: "normal",
    onclick: function (info) {
        console.log(info);
    }
});

ContextType

使い方としては2種類あって contexts に複数の ContextType を指定するか、
chrome.contextMenus.createで何個も追加する。

前者の場合は onclick イベントの仮引数(info)からイベントを判断する必要がある。
例えば、仮引数にlinkUrl があるからこれはlinkが選択された状態でコンテキストメニューがクリックされた、とか。

後者の場合は、イベントごとに処理を記述するため判断は不要だが、複数のコンテキストメニューが表示される可能性がある。
例えば iframe 内のリンクを右クリックしたら、all, frame, selection, link のコンテキストメニューが表示される。

特殊な ContextType として alllauncher を除く、全てのTypeを表している。

Type Type all 説明
page 何も選択しない状態で画面上を右クリック
frame frame や iframe 内で右クリック
selection 何か選択した状態で右クリック
link aタグ上で右クリック
editable 編集可能なテキストボックスなどで右クリック
image imgタグ上で右クリック
video videoタグ上で右クリック
audio audioタグ上で右クリック
launcher - 確認できず1
browser_action - 確認できず2
page_action ブラウザ右上の拡張機能のアイコンをクリック

ItemType

https://developer.chrome.com/apps/contextMenus#type-ItemType
コンテキストメニューに選択をつけることができる。

image.png

Type 説明
未指定(normal)
checkbox 複数選択が可能なコンテキストメニュー
radio ひとつだけチェックするコンテキストメニュー
sepator 確認できず3
  1. chrome://apps/ のランチャーのことかな?

  2. page_action と同じみたいだが、無反応だった

  3. radio と同じみたいだが、無反応だった

42
41
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
42
41

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?