====== 03 Chrome拡張機能 Manifest V3 ====== Manifest V2が2023年以降は利用できなくなるので、エラーがでます。 その為Manifest V3へ対応方法 [[13_javascript:02_chrome:02_hello_world2]] をManifest V3に対応させてみる ===== manifest.json ===== browser_action->actionとbackgroundのscripts->service_workerなどが変わっています。 { "name": "クリックアラート2", "manifest_version": 3, "version": "1.1", "description": "クリックするとアラートを出すだけ2", "action": { "default_title": "EXTENTION_SAMPLE" }, "background": { "service_worker": "background.js" }, "content_scripts": [{ "matches": [""], "js": ["script.js"] }] } ===== background.js ===== chrome.action.onClicked.addListener(function (tab){ chrome.tabs.sendMessage(tab.id, "Action"); }); ===== script.js ===== chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) { if (message == "Action") { hogehoge(); } sendResponse(); return true; }); function hogehoge() { alert('AAAAA'); } ===== Error ===== ==== Error1 ==== これが、Manifest V2がサポート終了である旨のえらー Manifest version 2 is deprecated, and support will be removed in 2023. See https://developer.chrome.com/blog/mv2-transition/ for more details. ==== Error2 ==== Manifest V3以降後のmessageのresponse関連のエラー このメッセージは、送られたmessegeがレスポンスを受け取って、返す前にmessageがcloseされてしまっているようです。 Uncaught (in promise) Error: The message port closed before a response was received. ==== 対応 ==== script.jsで、chrome.runtime.onMessage.addListener(async function (内の下記分を追加する事で、消えます。 sendResponse(); {{tag>日記 chrome}}