はじめまして。
昨日より、chromeの拡張機能開発に取り組んでいるものの、思うように動かず苦戦しています。
(プログラミング自体も、初心者です)
何卒、ご教示ください。
◆環境
Windows10、chrome、javascript
◆やりたいこと
chromeの拡張機能を作りたいです。
拡張機能の概要は、chromeのアクティブなタブ(内容はyahooなど、任意)で右クリックをすると、アラートを表示させたいのです。
◆現状
「background.js」からメッセージを送った「content.js」のアラートが表示されず、
「background.js」のcallbackが”undefined”になります。
「content.js」が正しく呼び出されていないのではないか、と思っているのですが、解決に至りません。
background.js
右クリックメニューを表示させて、content.jsにメッセージを送る
//右クリックメニュー表示 chrome.runtime.onInstalled.addListener(function() { // コンテキストメニューの追加 const parent = chrome.contextMenus.create({ type: "normal", id: "sample_manu", title: "サンプルメニュー", contexts: ["all"] }); }); //content.jsにメッセージを送る chrome.contextMenus.onClicked.addListener(function(item){ var send_data = { type: 'say-hello', data: 'hoge' }; chrome.tabs.query({ active: true, currentWindow: true }, aim_message); function aim_message(tabs) { alert('呼び出し'+tabs[0].id); chrome.tabs.sendMessage(tabs[0].id, send_data, callback); } function callback(text) { alert(text); ←undefined } })
content.js
//background.jsからメッセージを受けて、アラートを表示 chrome.runtime.onMessage.addListener((request, sender, callback) => { alert('受信したデータは', request.data); callback('終わったよ'); return true; });
manifest.json
{ "manifest_version": 2, "name": "test4", "version": "0.0.1", "permissions": [ "tabs", "activeTab", "contextMenus" ], "background": { "scripts": ["background.js"], "persistent": false }, "content_scripts": [ { "matches": ["<all_urls>"], "js": ["content.js"] } ] }
あなたの回答
tips
プレビュー