1
4

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 1 year has passed since last update.

Chrome拡張機能の右クリックメニューが、ページの背景以外で右クリックしても表示されるようにする。

Last updated at Posted at 2023-02-01

前置き

chrome拡張機能を開発する際、manifestpermissionscontextMenus を追加し、

manifest.json
{
    ...
    "permissions": [..., "contextMenus"]
}

スクリプトで

*.js
chrome.runtime.onInstalled.addListener(() => {
    chrome.contextMenus.create({
        id: "parent",
        title: "サンプルのメニュー項目",
    });
});

とすれば右クリックメニューを追加できますが、ウェブページの背景で右クリックしたときのみ表示されます。

では、例えば画像などをクリックしたときに表示されるようにするにはどうすればよいのでしょうか?

解説

chrome.contextMenus.create する際の引数に contexts: ["image"] を追加すればよいです。

*.js
chrome.runtime.onInstalled.addListener(() => {
    chrome.contextMenus.create({
        id: "parent",
        title: "サンプルのメニュー項目",
        contexts: ["image"]
    });
});

使える ContextType は以下のとおりです。

"all"
"page"
"frame"
"selection"
"link"
"editable"
"image"
"video"
"audio"
"launcher"
"browser_action"
"page_action"
"action"

あとがき

↑このドキュメントを読めばすぐに分かることですが、日本語で解説したページが見当たらなかったため記事にしました。

おまけ

このノートの主題ではないですが右クリックしたときにスクリプトを実行するにはこうです。

*.js
chrome.contextMenus.onClicked.addListener((item) => {
    /** いずれかのメニュー項目がクリックされたときに実行される関数 **/
});

contextTypeimage のときの items の構造

{
    "editable": false,
    "frameId": 0,
    "mediaType": "image",
    "menuItemId": "parent",
    "pageUrl": "https://example.com/example.html",
    "srcUrl": "https://example.com/images/example.jpg"
}
1
4
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
1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?