コンテキストメニュー項目の追加
Webページ、画像、リンクを右クリックしたときに表示され、拡張機能のアクションを実行するカスタムコンテキストメニュー項目を作成します。
「コンテキストメニュー項目の追加」はCoddyKit上の無料Browser Extensions Development (Chrome & Edge)レッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはBrowser Extensions Development (Chrome & Edge)学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Browser Extensions Development (Chrome & Edge)コースには全4レッスンが含まれています。
このレッスンの一部はまだ翻訳されておらず、英語で表示されています。
What are Context Menus?
Browser extensions can add custom items to the context menu, which appears when you right-click on a web page.
These items let users perform quick actions related to what they clicked on, like saving an image, translating selected text, or triggering a custom search.
Enabling Context Menus
Before your extension can create context menu items, you need to declare the "contextMenus" permission in your manifest.json file.
This permission tells the browser your extension intends to interact with the context menu API.
{ "manifest_version": 3,
"name": "My Menu Extension",
"version": "1.0",
"permissions": [
"contextMenus"
],
"background": {
"service_worker": "background.js"
}
}The `chrome.contextMenus` API
The chrome.contextMenus API is how your background service worker interacts with context menus.
It provides methods to manage menu items:
create(): To add a new menu item.update(): To change an existing item's properties.remove(): To delete a specific item.removeAll(): To clear all items added by your extension.
Creating Your First Item
To create a context menu item, use chrome.contextMenus.create(). You must provide a unique id and a title.
This example adds a simple item named "My First Item" to the general page context menu.
// background.js
chrome.runtime.onInstalled.addListener(() => {
chrome.contextMenus.create({
id: "myFirstItem",
title: "My First Item",
contexts: ["page"]
});
});Item Properties: ID & Title
Each context menu item needs a unique id. This ID helps you identify which item was clicked later.
The title is the text displayed in the menu. The contexts array specifies where the item should appear.
- id: A unique string identifier.
- title: The user-visible text for the menu item.
- contexts: An array of strings defining where the item shows up.
Responding to Clicks
After creating an item, you'll want to run code when a user clicks it. Use chrome.contextMenus.onClicked.addListener() to listen for these clicks.
The listener receives an info object with details about the click, including the menuItemId, which helps you identify which item was activated.
// background.js
chrome.runtime.onInstalled.addListener(() => {
chrome.contextMenus.create({
id: "logClickItem",
title: "Log This Click",
contexts: ["page"]
});
});
chrome.contextMenus.onClicked.addListener((info, tab) => {
if (info.menuItemId === "logClickItem") {
console.log("Item 'Log This Click' was clicked!");
// You can perform other actions here
}
});Context Types for Specific Elements
The contexts property is powerful! It allows you to control exactly where your menu item appears.
Common context types include:
"page": Right-click on any part of the page."selection": Right-click on selected text."link": Right-click on a hyperlink."image": Right-click on an image."video","audio": For media elements.
Example: Search Selected Text
Let's create an item that appears only when text is selected. When clicked, it will open a new tab to search that text on Google.
Notice the selectionText property in the info object when using the "selection" context.
// background.js
chrome.runtime.onInstalled.addListener(() => {
chrome.contextMenus.create({
id: "searchSelected",
title: "Search '%s' on Google", // %s is placeholder for selected text
contexts: ["selection"]
});
});
chrome.contextMenus.onClicked.addListener((info, tab) => {
if (info.menuItemId === "searchSelected" && info.selectionText) {
const query = encodeURIComponent(info.selectionText);
const url = `https://www.google.com/search?q=${query}`;
chrome.tabs.create({ url: url });
}
});Updating and Removing Items
You can dynamically change or remove context menu items after they've been created. This is useful for adapting to user preferences or page content.
chrome.contextMenus.update(id, properties): Changes properties like title or contexts.chrome.contextMenus.remove(id): Deletes a specific item.chrome.contextMenus.removeAll(): Deletes all items added by your extension.
Context Menu Challenge
Consider the following manifest.json and background script for an extension.
Which statements about the context menu items created are true?
// manifest.json
{
"manifest_version": 3,
"name": "Test Menu",
"version": "1.0",
"permissions": ["contextMenus"],
"background": {"service_worker": "background.js"}
}
// background.js
chrome.runtime.onInstalled.addListener(() => {
chrome.contextMenus.create({
id: "itemA",
title: "Action A",
contexts: ["page"]
});
chrome.contextMenus.create({
id: "itemB",
title: "Action B",
contexts: ["selection"]
});
chrome.contextMenus.create({
id: "itemC",
title: "Action C",
contexts: ["link"]
});
});Recap: Context Menus
You've learned how to add custom context menu items to your browser extension!
- Declare
"contextMenus"permission inmanifest.json. - Use
chrome.contextMenus.create()in your background script. - Specify
id,title, andcontextsfor each item. - Listen for clicks using
chrome.contextMenus.onClicked.addListener(). - Contexts like
"page","selection","link"allow precise targeting.
These skills enable you to add powerful, context-aware actions to your extension. Next, we'll explore integrating with the Omnibox!
よくある質問
「コンテキストメニュー項目の追加」レッスンは無料ですか?
はい。「コンテキストメニュー項目の追加」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Browser Extensions Development (Chrome & Edge)コースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Browser Extensions Development (Chrome & Edge)コースには全4レッスンが含まれています。
「コンテキストメニュー項目の追加」で何を学びますか?
Webページ、画像、リンクを右クリックしたときに表示され、拡張機能のアクションを実行するカスタムコンテキストメニュー項目を作成します。 ブラウザで直接実行するハンズオンコードでBrowser Extensions Development (Chrome & Edge)を演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Browser Extensions Development (Chrome & Edge)を始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのBrowser Extensions Development (Chrome & Edge)は初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「コンテキストメニュー項目の追加」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このBrowser Extensions Development (Chrome & Edge)レッスンでコードを書いて実行できますか?
はい。すべてのBrowser Extensions Development (Chrome & Edge)レッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- コンテキストメニュー項目の追加
- Omniboxキーワードの統合
- Omnibox入力への応答
- Commands APIによるキーボードショートカット