====== 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}}